如何更改远程分支正在跟踪?

时间:2011-02-02 18:20:34

标签: git

必须在新服务器上设置central存储库,因此我在本地存储库上创建了一个新的远程控制器,并将其推送到该服务器。

但现在当我git pull时,它声称我是最新的。这是错误的 - 它告诉我关于远程分支,而不是新分支,我知道事实上有新的提交提取。

如何更改本地分支以跟踪其他遥控器?

我可以在git配置文件中看到这个,但我不想搞砸了。

[branch "master"]
    remote = oldserver
    merge = refs/heads/master

14 个答案:

答案 0 :(得分:881)

使用 git v1.8.0 或更高版本:

git branch branch_name --set-upstream-to your_new_remote/branch_name

或者您可以使用-u开关:

git branch branch_name -u your_new_remote/branch_name

使用git v1.7.12 或更早版本:

git branch --set-upstream branch_name your_new_remote/branch_name

答案 1 :(得分:75)

对我而言,修复是:

git remote set-url origin https://some_url/some_repo

然后:

git push

答案 2 :(得分:30)

使用最新的git(2.5.5)命令如下:

git branch --set-upstream-to=origin/branch

这将更新当前本地分支的远程跟踪分支

答案 3 :(得分:18)

如果你对此有所了解,编辑配置文件就足够安全了。如果你想变得更偏执,你可以使用瓷器命令来修改它:

git config branch.master.remote newserver

当然,如果您在之前和之后查看配置,您会发现它确实完成了您要执行的操作。

但在你的个案中,我要做的是:

git remote rename origin old-origin
git remote rename new-origin origin

也就是说,如果新服务器将成为规范的远程服务器,为什么不将其称为原始服务器,就好像您最初克隆它一样?

答案 4 :(得分:17)

对发生的事情有很多控制权的另一个选择是手动编辑配置:

git config --edit

或简写

git config -e

然后随意编辑文件,保存并修改您的修改。

答案 5 :(得分:7)

git fetch origin
git checkout --track -b local_branch_name origin/branch_name

git fetch
git checkout -b local_branch_name origin/branch_name

答案 6 :(得分:4)

您可以删除当前分支并执行:

git branch --track local_branch remote_branch

或者将远程服务器更改为配置

中的当前服务器

答案 7 :(得分:4)

这是最简单的命令:

git push --set-upstream <new-origin> <branch-to-track>

例如,假设命令git remote -v产生类似的东西:

origin  ssh://git@bitbucket.some.corp/~myself/projectr.git (fetch)
origin  ssh://git@bitbucket.some.corp/~myself/projectr.git (push)
team    ssh://git@bitbucket.some.corp/vbs/projectr.git (fetch)
team    ssh://git@bitbucket.some.corp/vbs/projectr.git (push)

改为跟踪团队:

git push --set-upstream team master

答案 8 :(得分:2)

根据我对最新git documentation的理解,概要是:

git branch -u upstream-branch local-branch
git branch --set-upstream-to=upstream-branch local-branch

这种用法似乎与urschrei的答案略有不同,因为在他的概要中是:

git branch local-branch -u upstream-branch 
git branch local-branch --set-upstream-to=upstream-branch 

我猜他们又改变了文档?

答案 9 :(得分:1)

在最新的git版本中,例如 2.7.4

git checkout branch_name#您要更改跟踪分支的分支名称

git branch --set-upstream-to=upstream/tracking_branch_name#上游-远程名称

答案 10 :(得分:1)

我发现@critikaster的帖子很有帮助,除了我必须在GIT 2.21上执行以下命令:

$ git remote set-url origin https://some_url/some_repo
$ git push --set-upstream origin master

答案 11 :(得分:0)

最简单的方法是简单地推送到新分支:

git push -u原始分支/名称

答案 12 :(得分:0)

尝试上述操作并进行搜索,搜索等后,我意识到我的更改均未在本地分支上的服务器上进行,并且Team Explorer中的Visual Studio并未指示该分支跟踪了远程分支。远程分支在那里,所以它应该可以工作。我最终删除了github上的远程分支,并“推”我的本地分支,该分支的更改由于未知原因而未被跟踪。

通过删除远程分支并“重新”推送未跟踪的本地分支,可以在git hub上重新创建本地分支。我尝试在命令提示符下(使用Windows)执行此操作,直到执行此操作,我才能让本地分支跟踪远程分支。一切恢复正常。

答案 13 :(得分:0)

基于git文档的最佳方法是:

  1. 确保实际的原点路径:

git remote -v

  1. 然后通过以下方式进行更改:

git remote set-url origin

其中url-repository是我们从clone选项获得的相同URL。