在git push中指定'origin / master'部分

时间:2012-04-08 17:44:22

标签: git push git-branch remote-branch

如果我做一个git push,我会看到3个分支。 1)我正在处理的本地分支,比如'foo1'2)本地远程跟踪分支'origin / foo2'(在推/拉之后总是与远程foo3进行相同的提交)3)'foo3'in远程回购。当然,通常他们都会被称为foo,但我想要不同的名字,所以我可以正确理解git并在这里提出这个问题。我不明白我在哪里可以指定foo2。当我做的时候

git push origin foo1:foo3

在我的.git / config

中有这个
[branch "master"]
remote = origin
merge = refs/remotes/origin/foo2

第1点和第3点都可以,但我的本地仓库中没有origin / foo2。我错过了什么?或者是我的远程跟踪分支始终的名称与遥控器完全相同的答案 - 这对我来说没问题 - 我只是想要正确理解git。

在我的例子中,git-push手册也只讨论了两个引用(refspec src和dst),第1点和第3点。在更新远程仓库上的dst分支后,手册在哪里讨论,还更新了本地远程跟踪引用?

2 个答案:

答案 0 :(得分:1)

你没有在git push上看到三个分支。只有两个

您所描述的foo2用于git pull(git fetch + git merge)或git rebase
(来自git config

branch.<name>.merge
  

branch.<name>.remote一起定义给定分支的上游分支   它告诉git fetch/git pull/git rebase要合并哪个分支,也可以影响git push(参见push.default)   在分支<name>中,它告诉git fetch要在FETCH_HEAD中标记为合并的默认refspec。该值的处理类似于refspec的远程部分,并且必须匹配从“branch.<name>.remote”给出的远程提取的ref。

     

合并信息由git pull(首先调用git fetch)用于查找默认分支以进行合并。   如果没有此选项,git pull默认合并所提取的第一个refspec   指定多个值以获得章鱼合并。

请注意,在 git1.7.10之后,默认推送策略可能会更改为matchingupstream(请参阅“What is the result of git push origin?”),这意味着, branch.<name>.merge定义上游分支(在没有branch.<name>.remote的情况下),默认情况下可以使用git push

答案 1 :(得分:0)

你是对的,远程跟踪分支与远程仓库上的分支同名。否则会有些混乱!

因此,origin/foo3只代表远程foo3中的分支origin。运行git fetch后,它将与遥控器正确同步。请注意,在运行git pull时,您实际上正在运行git fetch ; git merge

运行git push origin foo1:foo3时,将本地分支foo1推送到远程分支origin/foo3。因此,在您的情况下,指定分支foo2

是没有意义的