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

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


当前回答

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

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

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

git签出分支名称

例子:

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

gitbranch—设置nameOfRemoteBranch的上游

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

使用示例:

其他回答

在这里,使用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

如果运行后出现“错误:请求的上游分支'origin/foo'不存在”:

git branch -u origin/foo

确保原点确实有一个foo分支。确保remote.origin.fetch变量设置为+refs/heads/*:refs/remotes/origin/*:

$ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
$ git config --get remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*

运行git fetch-v。您应该看到git从origin/foo更新:

$ git fetch -v
From github.com:davidhcefx/test
 * [new branch]      foo             -> origin/foo
 = [up to date]      master          -> origin/master

成功后,git branch-avv将显示方括号,表示跟踪的远程分支:

$ git branch -u origin/foo
branch 'foo' set up to track 'origin/foo'.
$ git branch -avv
* foo                            92c5ada [origin/foo] Initial commit
  master                         92c5ada [origin/master] Initial commit

或简单地通过:

如果您还不在分支中,请切换到分支:

[za]$ git checkout branch_name

run

[za]$ git branch --set-upstream origin branch_name
Branch origin set up to track local branch brnach_name by rebasing.

您准备好:

 [za]$ git push origin branch_name

您可以查看配置文件,看看是什么通过运行以下命令来跟踪什么:

 [za]$ git config -e

很高兴知道这一点,它显示了哪些分支被跟踪,哪些分支没有被跟踪。:

  [za]$ git remote show origin 

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

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

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

git签出分支名称

例子:

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

gitbranch—设置nameOfRemoteBranch的上游

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

使用示例:

给定分支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”?