git合并原点-始终默认为跟踪分支?
假设我有一个脚本,可以执行以下操作:git合并原点-始终默认为跟踪分支?,git,git-merge,Git,Git Merge,假设我有一个脚本,可以执行以下操作: git fetch origin git branch | while read b; do git checkout $b git merge origin done 我的问题是-假设所有分支都被远程跟踪,git是否总是知道如何使用git merge origin命令 。。。git是否总是知道如何使用git merge origin命令 Git总是会做一些事情。但可能不是你想要的!您可能想要: git checkout $b git mer
git fetch origin
git branch | while read b; do
git checkout $b
git merge origin
done
我的问题是-假设所有分支都被远程跟踪,git是否总是知道如何使用git merge origin
命令
。。。git是否总是知道如何使用git merge origin
命令
Git总是会做一些事情。但可能不是你想要的!您可能想要:
git checkout $b
git merge $b@{upstream}
这是不会发生的
当Git将master
或origin/develope
或MERGE\u HEAD
之类的字符串解析为提交哈希ID时,它遵循中描述的规则。特别是,使用了六个步骤。第一个检查.git
目录中的文件。第三步检查标记名,第四步检查分支名
请按照上面的链接,检查指定修订部分下列出的六个步骤中的每一个,并思考Git在每个步骤尝试origin
时会发生什么。例如,在步骤1,Git将检查名为.Git/origin
的文件,该文件(可能)不存在。请注意,当步骤6应用于文本字符串origin
时,将检查您的refs/remotes/origin/HEAD
。现在运行:
$ git rev-parse refs/remotes/origin/HEAD
查看您得到的哈希ID。这将告诉您git merge origin的行为
(要查看如何更改与
refs/remotes/origin/HEAD
关联的哈希ID,请参阅,特别是set HEAD
子命令。但是使用{suprement}
符号。)好吧,那么{suprement}
的东西是真正的语法对吗?谢谢,这将很有用:在同一文档中搜索@{upstream}
;git merge HEAD@{upstream}对于当前分支是否正确?我之所以使用fetch而不是git pull,是因为我想获取多个分支,而不仅仅是我当前的分支。是的,HEAD@{upstream}
的意思与@{upstream}
或只是@{upstream}
相同HEAD
本身会更改内容,从以前的内容更改为每个git checkout上的ref:refs/heads/
。因此,如果br1
的上游是origin/branch
,那么在git checkout br1
之后,git rev parse--abbrev ref@{upstream}
打印origin/branch
。