How to change the remote a branch is tracking?
必须在新服务器上设置
但现在当我做
如何更改本地分支以跟踪不同的遥控器?
我可以在git配置文件中看到这个,但我不想把事情搞砸。
1 2 3 | [branch"master"] remote = oldserver merge = refs/heads/master |
使用Git v1.8.0或更高版本:
江户十一〔七〕号
对我来说,解决办法是:
1 | git remote set-url origin https://some_url/some_repo |
。
然后:
1 | git push |
。
对于最新的git(2.5.5),命令如下:
1 | git branch --set-upstream-to=origin/branch |
这将更新当前本地分支的远程跟踪分支
如果你对它很理智,那么编辑配置文件就足够安全了。如果你想更偏执一点,你可以使用瓷质命令来修改它:
1 | git config branch.master.remote newserver |
当然,如果您在之前和之后查看配置,您将看到它确实完成了您将要做的工作。
但就你个人而言,我会做的是:
1 2 | git remote rename origin old-origin git remote rename new-origin origin |
号
也就是说,如果新服务器将成为规范的远程服务器,为什么不把它称为原始服务器,就好像您最初是从它克隆的一样?
另一个对正在发生的事情有很大控制权的选择是手工编辑您的配置:
1 | git config --edit |
。
或者速记
1 | git config -e |
然后随意编辑文件,保存并应用修改。
1 2 | git fetch origin git checkout --track -b local_branch_name origin/branch_name |
。
或
1 2 | git fetch git checkout -b local_branch_name origin/branch_name |
这是最简单的命令:
1 | git push --set-upstream <new-origin> <branch-to-track> |
号
例如,给定命令
1 2 3 4 | origin ssh://[email protected]/~myself/projectr.git (fetch) origin ssh://[email protected]/~myself/projectr.git (push) team ssh://[email protected]/vbs/projectr.git (fetch) team ssh://[email protected]/vbs/projectr.git (push) |
号
改为跟踪团队:
1 | git push --set-upstream team master |
号
您可以删除当前分支并执行以下操作:
1 | git branch --track local_branch remote_branch |
或者将远程服务器更改为配置中的当前服务器
根据我从最新的Git文档中了解到的内容,概要如下:
1 2 | git branch -u upstream-branch local-branch git branch --set-upstream-to=upstream-branch local-branch |
。
这种用法似乎有点不同于乌尔什雷的答案,正如他的摘要所示:
1 2 | git branch local-branch -u upstream-branch git branch local-branch --set-upstream-to=upstream-branch |
号
我猜他们又更改了文件?
我发现@critikaster的帖子很有用,只是我必须用git 2.21执行这些命令:
1 2 | $ git remote set-url origin https://some_url/some_repo $ git push --set-upstream origin master |
号
在最新的Git版本中,如2.7.4,
要更改跟踪分支的