我正在挖掘一些使用 git 的生产脚本,并试图理解这个命令:
git pull --rebase origin "${tag_or_commit}"
从我在 git pull
和 git rebase
的文档中找到的内容来看,它看起来是唯一应该永远的东西在 tag_or_commit
bash 变量中,必须是命令才能工作的分支名称。
对于给定标签或提交而不是分支的情况下,该命令将执行的操作是否有记录的行为?在哪里可以找到它?
最佳答案
标签和分支实际上只是对提交的引用,主要区别是分支引用移动目标(该分支上的最新提交),而标签引用单个时间点提交,但最终它们是只是指向一个提交。
上面的tag_or_commit
变量可以重命名为tag_or_branch_or_commit
,或者简单地commit
。我认为变量名称有些误导/令人困惑。
我发现最常见的用法是将其 rebase 为分支,这意味着将分支 rebase 到最近的提交。提供提交(或标签)将 rebase 到该提交,不再进一步。
因此,上面的完整命令是从原点 pull ,然后重新调整已发生的提交,直到 tag_or_commit
所指的点。一个用例可能是,如果您想重新调整到已发布到生产环境的内容,并且您有一个标签 product_release
,那么如果您要执行:
git pull --rebase origin production_release
您将获得 product_release
标记之前的所有提交,但仅此而已。
关于git pull --rebase 原始标记名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34055020/