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

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


当前回答

在这里,使用github和git版本2.1.4,只需执行以下操作:

$ git clone git@github.com:user/repo.git

遥控器由itelsef提供,即使没有本地链接:

$ git remote show origin

* remote origin
  Fetch URL: git@github.com:user/repo.git
  Push  URL: git@github.com:user/repo.git
  HEAD branch: master
  Remote branches:
    develop tracked         <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    master  tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

但当然,仍然没有本地分支机构:

$ git branch
* master                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

看见现在,如果您只是签出develp,它将自动执行魔术:

$ git checkout develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'

很容易!


总结只需运行以下两个命令:

$ git clone git@github.com:user/repo.git
$ git checkout develop

其他回答

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

grb track foo upstream

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

我相信,早在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版本2.25.1,请使用以下命令:

git push --set-upstream origin <local_branch_name>

以某种相关的方式,我试图将远程跟踪分支添加到现有分支,但无法访问系统上的远程存储库,我想在其中添加远程跟踪分支(因为我经常通过sneakernet将此回购的副本导出到另一个有权推送到该远程的系统)。我发现没有办法强制在本地上添加尚未提取的远程分支(因此本地不知道该分支在远程上存在,我会得到错误:请求的上游分支“origin/remotebranchname”不存在)。

最后,我通过在.git/refs/remotes/origin/remothbranchname处添加一个新的头文件,然后将ref(眼球移动最快,虽然很蹩脚;-)从有权访问原始存储库的系统复制到工作站(使用我添加远程分支的本地存储库),成功地添加了以前未知的新远程分支(无需获取)。

完成后,我可以使用gitbranch--setupstreamto=origin/remotebranchname

使用“--track”选项

在一次git拉动后:git checkout--track<远程分支名称>或:git获取和git签出<分支名称>