git merge origin - 总是默认跟踪分支?

问题描述 投票:0回答:1

假设我有一个脚本,可以执行以下操作:

git fetch origin

git branch | while read b; do
   git checkout $b
   git merge origin
done

我的问题是 - git总是知道如何处理git merge origin命令,假设所有分支都被远程跟踪?

git git-merge
1个回答
1
投票

... git总是知道如何处理git merge origin命令......

Git总会做点什么。可能不是你想要的东西!你可能想要:

git checkout $b
git merge $b@{upstream}

这不会发生什么。

当Git将masterorigin/developMERGE_HEAD这样的字符串解析为提交哈希ID时,它遵循the gitrevisions documentation中描述的规则。特别是,使用了六个步骤。第一个检查.git目录中的文件。第三步检查标签名称,第四步检查分支名称。

请按照上面的链接检查指定修订部分下列出的六个步骤中的每个步骤,并考虑当Git在每个步骤尝试origin时会发生什么。例如,在步骤1,Git将检查名为.git/origin的文件,该文件(推测)将不存在。请注意,当应用于文字字符串origin时,步骤6检查您的refs/remotes/origin/HEAD。现在运行:

$ git rev-parse refs/remotes/origin/HEAD

查看您获得的哈希ID。这告诉你git merge origin将如何表现。

(要了解如何更改与refs/remotes/origin/HEAD关联的哈希ID,请参阅the git remote documentation,尤其是set-head子命令。但请改用@{upstream}表示法。)

© www.soinside.com 2019 - 2024. All rights reserved.