我知道如何创建跟踪远程分支的新分支,但如何使现有分支跟踪远程分支?
我知道我可以编辑.git/config文件,但似乎应该有一种更简单的方法。
我知道如何创建跟踪远程分支的新分支,但如何使现有分支跟踪远程分支?
我知道我可以编辑.git/config文件,但似乎应该有一种更简单的方法。
当前回答
如果运行后出现“错误:请求的上游分支'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
其他回答
对于1.6.x,可以使用git_remote_branch工具完成:
grb track foo upstream
这将导致Git使foo跟踪上游/foo。
这也行
git branch --set-upstream-to=/< remote>/< branch> < localbranch>
如果运行后出现“错误:请求的上游分支'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
1-使用:git fetch--all更新本地元数据
2-使用gitbranch-a显示远程和本地分支,请参见以下屏幕截图
3-切换到要与远程链接的目标分支:使用
git签出分支名称
例子:
4-使用以下方法将本地分支链接到远程分支:
gitbranch—设置nameOfRemoteBranch的上游
N.B:nameOfRemoteBranch:从步骤2“gitbranch-r”的输出中复制
使用示例:
这不是对这个问题的直接回答,但我想在这里为任何在尝试配置上游分支时可能遇到与我相同问题的人留下一条注释。
小心push.default。
对于较旧的git版本,默认值为匹配,如果您有以下情况,则会导致非常不理想的行为:
本地分支机构“主”跟踪到原点/主
远程分支“上游”跟踪到上游/主分支
如果您在“上游”分支上尝试“git push”,则使用push.default匹配,git将自动尝试将本地分支“master”合并为“upstream/master”,从而导致大量混乱。
这会产生更理智的行为:
git-config—全局push.default上游