git pull --rebase 原始标记名?

标签 git git-rebase git-pull git-tag

我正在挖掘一些使用 git 的生产脚本,并试图理解这个命令:

git pull --rebase origin "${tag_or_commit}"

从我在 git pullgit 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/

相关文章:

git - git pull 和 git pull --rebase 的区别

即使使用 --no-edit,Git Pull 也会打开 VIM

git - 是否可以在 Gitolite 中实现基于 repo 的 Hook ?

git - 暂存具有特定扩展名的文件,并且只有那些在 git status 中显示为已修改的文件

git - "git checkout <filename>"和 "git checkout -​- <filename>"之间的区别

git - 为什么非交互式 rebase 上的 Git 提交后 Hook 未运行?

git/github 从 merge 的 pull 请求创建反向补丁

git - 我说的对吗 'merge' 和 'rebase' 的语法意味着相反的操作?

Git rebase递归分支

git - 为什么我不能 git pull 不相关的本地更改?