如何在不影响当前分支的情况下获取远程分支并更新该分支的git的本地引用?例如,如果我这样做
$ git pull origin master
origin / master合并到我当前的分支中。这也行不通
$ git fetch origin master
那时我检查
$ git branch -r -v
origin/HEAD -> origin/master
origin/master 7cf6ec5 test 02
原点/主参考“7cf6ec5 test 02”落后。真正的起源/主人是“XXXXXX测试03”。 git fetch
仅将更改拉入FETCH_HEAD,但未上传本地origin / master ref。更新该参考的步骤是什么?
注意:
$ git fetch origin
将获得所有远程引用并更新它们但不幸的是(a)很多混乱。 (我不希望别人的30-50个随机分支知道有人不想要我的)和(b)因为分支在原点被删除,所以当我下次git fetch origin
时,这些引用不会被本地删除这意味着这条道路最终会残留。
问题是,如何只获取一个分支并在本地更新其参考?
答案 0 :(得分:6)
我认为我正在寻找的是这个
$ git fetch origin master:refs/remotes/origin/master
这似乎与'git fetch origin master'不同,我确实看到ref更新了。
任何理由都是错误的答案?我应该害怕什么?
答案 1 :(得分:1)
git fetch origin
这将获取所有远程分支并为它们更新远程跟踪分支。
现在你可以做两件事之一
git checkout other-branch
git merge origin/other-branch
git checkout -
或
git push . origin/other-branch:other-branch
如果您知道它将是一个快速合并,那么最后一个选项就可以了。
答案 2 :(得分:0)
您始终可以为git fetch
命令提供refspec。特别是,如果您想要更新other-branch
,您可以执行以下操作:
git fetch origin other-branch:other-branch
这将从原点获取refs/heads/other-branch
的当前提示,并将其放入同名的本地分支。
另一种方式是继续前进:
git fetch origin other-branch
然后重新创建本地分支:
git branch -l -f other-branch -t origin/other-branch
-l
是一种安全机制。它将创建一个reflog条目,以便您可以在需要时返回到以前的版本。