我知道如何创建跟踪远程分支的新分支,但如何使现有分支跟踪远程分支?

我知道我可以编辑.git/config文件,但似乎应该有一种更简单的方法。


当前回答

我相信,早在Git1.5.x中,您就可以让本地分支$branch跟踪远程分支源/$BRANCCH,就像这样。

鉴于$BRANCH和origin/$BRANCCH存在,并且您当前尚未签出$BRANCH(如果有,请切换),请执行以下操作:

git branch -f --track $BRANCH origin/$BRANCH

这将重新创建$BRANCH作为跟踪分支。尽管$BRANCH已经存在,但-f强制创建--如果使用了通常的默认值(即git-config参数branch.atosetupmerge为true),则跟踪是可选的。

注意,如果origin/$BRANCH还不存在,您可以通过将本地$BRANCCH推入远程存储库来创建它,方法是:

git push origin $BRANCH

然后是上一个命令,将本地分支提升为跟踪分支。

其他回答

简而言之

git branch --set-upstream yourLocalBranchName origin/develop

这将使您的LocalBranchName跟踪名为develop的远程分支。

这不是对这个问题的直接回答,但我想在这里为任何在尝试配置上游分支时可能遇到与我相同问题的人留下一条注释。

小心push.default。

对于较旧的git版本,默认值为匹配,如果您有以下情况,则会导致非常不理想的行为:

本地分支机构“主”跟踪到原点/主

远程分支“上游”跟踪到上游/主分支

如果您在“上游”分支上尝试“git push”,则使用push.default匹配,git将自动尝试将本地分支“master”合并为“upstream/master”,从而导致大量混乱。

这会产生更理智的行为:

git-config—全局push.default上游

这也行

git branch --set-upstream-to=/< remote>/< branch> < localbranch>

确保您运行:

git config push.default tracking

能够顺利推进

对于1.6.x,可以使用git_remote_branch工具完成:

grb track foo upstream

这将导致Git使foo跟踪上游/foo。