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

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

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

如何更改本地分支以跟踪不同的远程?

我可以在git配置文件中看到这一点,但我不想把事情搞砸。

[branch "master"]remote = oldservermerge = refs/heads/master
661777 次浏览

如果你对此保持理智,编辑配置文件就足够安全了。如果你想更偏执一点,你可以使用瓷器命令来修改它:

git config branch.master.remote newserver

当然,如果您查看之前和之后的配置,您会发现它确实完成了您要做的事情。

但在你个人的情况下,我会做的是:

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

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

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

git branch --track local_branch remote_branch

或者在配置中将远程服务器更改为当前服务器

使用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

使用gitv1.7.12或更早版本

git branch --set-upstream branch_name your_new_remote/branch_name
git fetch origingit checkout --track -b local_branch_name origin/branch_name

git fetchgit checkout -b local_branch_name origin/branch_name

对我来说,修复是:

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

然后:

git push

对于up to dategit(2.5.5),命令如下:

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

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

对正在发生的事情进行大量控制的另一种选择是手动编辑您的配置:

git config --edit

或速记

git config -e

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

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

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

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

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

我猜他们又改留档了?

这是最简单的命令:

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

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

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

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

我发现@陈志立的帖子很有用,除了我必须在GIT 2.21中执行这些命令:

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

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

git push-u来源分支名称

在尝试了上述操作并搜索、搜索等之后,我意识到我的更改都不在我本地分支上的服务器上,而Team Explorer中的Visual Studio并未指示此分支跟踪了远程分支。远程分支在那里,所以它应该可以工作。我最终删除了github上的远程分支,并重新推送了我的本地分支,其中包含我的更改,但由于未知原因没有被跟踪。

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

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

  1. 确定实际的原始路径:

远程删除

  1. 然后进行更改:

git远程设置url来源

其中url存储库与我们从克隆选项获得的URL相同。

我尝试了很多解决方案,但这个解决方案对我来说适用于从比特桶到Azure Devops迁移:

  1. 创建仓库
  2. git clone源URL
  3. git config--global--unsetcredential.helper
  4. git配置credential.helper存储
  5. git远程rm来源
  6. git远程添加来源新仓库的URL
  7. git推送源--all
    在错误的情况下使用
    #获取推送源git push-f
    #删除推送源在访问或身份错误的情况下
    进入分支-->选择分支-->3点-->分支安全-->允许强制推送
  8. git push--tags