Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git合并原点-始终默认为跟踪分支?_Git_Git Merge - Fatal编程技术网

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