我知道如何创建跟踪远程分支的新分支,但如何使现有分支跟踪远程分支?
我知道我可以编辑.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
其他回答
以某种相关的方式,我试图将远程跟踪分支添加到现有分支,但无法访问系统上的远程存储库,我想在其中添加远程跟踪分支(因为我经常通过sneakernet将此回购的副本导出到另一个有权推送到该远程的系统)。我发现没有办法强制在本地上添加尚未提取的远程分支(因此本地不知道该分支在远程上存在,我会得到错误:请求的上游分支“origin/remotebranchname”不存在)。
最后,我通过在.git/refs/remotes/origin/remothbranchname处添加一个新的头文件,然后将ref(眼球移动最快,虽然很蹩脚;-)从有权访问原始存储库的系统复制到工作站(使用我添加远程分支的本地存储库),成功地添加了以前未知的新远程分支(无需获取)。
完成后,我可以使用gitbranch--setupstreamto=origin/remotebranchname
为了创建新分支,我们可以使用以下命令git checkout--track-b示例原点/example对于已创建的分支,要在远程分支之间创建链接,请使用以下命令
gitbranch-u源/远程分支名称
您可能会发现git_remote_branch工具很有用。它提供了创建、发布、删除、跟踪和重命名远程分支的简单命令。一个很好的特性是,您可以要求grb命令解释它将执行哪些git命令。
grb explain create my_branch github
# git_remote_branch version 0.3.0
# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch
您可以执行以下操作(假设您已在master上签出并希望推送到远程分支master):
如果您还没有“远程”,请设置它
git remote add origin ssh://...
现在配置master以了解跟踪:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
并推送:
git push origin master
我相信,早在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
然后是上一个命令,将本地分支提升为跟踪分支。