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

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


当前回答

给定分支foo和远程上游:

截至Git 1.8.0:

git branch -u upstream/foo

或者,如果本地分支foo不是当前分支:

git branch -u upstream/foo foo

或者,如果您想键入更长的命令,这些命令相当于以上两个命令:

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

截至Git 1.7.0(1.8.0之前):

git branch --set-upstream foo upstream/foo

笔记:

以上所有命令都将导致本地分支foo从远程上游跟踪远程分支foo。旧的(1.7.x)语法被弃用,取而代之的是新的(1.8+)语法。新语法旨在更直观、更容易记住。当对尚未获取的新创建的远程设备运行时,定义上游分支将失败。在这种情况下,请预先在上游运行gitfetch。


另请参见:为什么我需要一直做“--set upstream”?

其他回答

我使用以下命令(假设您的本地分支名称是“branch-namelocal”,而远程分支名称为“branchnameremote”):

$ git branch --set-upstream-to=origin/branch-name-remote branch-name-local

如果本地和远程分支具有相同的名称,则只需执行以下操作:

$ git branch --set-upstream-to=origin/branch-name branch-name

编辑.git/config可能是最简单、最快的方法。无论如何,这就是处理远程分支的Git命令所做的。

如果你不想手动处理这个文件(这并不难),你可以一直使用git-config来完成……但同样,这只会编辑.git/config文件。

当然,在使用git签出时,有一些方法可以自动跟踪远程分支(例如,通过传递--track标志),但这些命令可以处理新的分支,而不是现有的分支。

对于像我这样只想将本地分支名称与远程分支名称同步的任何人,这里有一个方便的命令:

git branch -u origin/$(git rev-parse --abbrev-ref HEAD)

1-使用:git fetch--all更新本地元数据

2-使用gitbranch-a显示远程和本地分支,请参见以下屏幕截图

3-切换到要与远程链接的目标分支:使用

git签出分支名称

例子:

4-使用以下方法将本地分支链接到远程分支:

gitbranch—设置nameOfRemoteBranch的上游

N.B:nameOfRemoteBranch:从步骤2“gitbranch-r”的输出中复制

使用示例:

我相信,早在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

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