中央存储库必须设置在一个新的服务器上,所以我在本地回购上创建了一个新的远程存储库,并将其推送到该服务器上。
但现在当我做git拉,它声称我是最新的。这是错误的——它告诉我的是旧的远程分支,而不是新分支,我知道新分支实际上有新的提交要获取。
如何更改本地分支以跟踪不同的远程?
我可以在git配置文件中看到这一点,但我不想把事情搞砸。
[branch "master"]
remote = oldserver
merge = refs/heads/master
中央存储库必须设置在一个新的服务器上,所以我在本地回购上创建了一个新的远程存储库,并将其推送到该服务器上。
但现在当我做git拉,它声称我是最新的。这是错误的——它告诉我的是旧的远程分支,而不是新分支,我知道新分支实际上有新的提交要获取。
如何更改本地分支以跟踪不同的远程?
我可以在git配置文件中看到这一点,但我不想把事情搞砸。
[branch "master"]
remote = oldserver
merge = refs/heads/master
当前回答
对我来说,解决办法是:
git remote set-url origin https://some_url/some_repo
然后:
git push
其他回答
对我来说,解决办法是:
git remote set-url origin https://some_url/some_repo
然后:
git push
如果你头脑清醒的话,编辑配置文件是很安全的。如果你想要更偏执一点,你可以使用瓷器命令来修改它:
git config branch.master.remote newserver
当然,如果您查看之前和之后的配置,您将看到它完全按照您要做的做了。
但在你的个人情况下,我要做的是:
git remote rename origin old-origin
git remote rename new-origin origin
也就是说,如果新服务器将成为规范的远程服务器,为什么不将其称为origin,就像您最初从它克隆出来一样?
git fetch origin
git checkout --track -b local_branch_name origin/branch_name
or
git fetch
git checkout -b local_branch_name origin/branch_name
这是最简单的命令:
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
我发现@critikaster的帖子很有帮助,除了我必须在GIT 2.21中执行这些命令:
$ git remote set-url origin https://some_url/some_repo
$ git push --set-upstream origin master