11

如何在不影响当前分支的情况下获取远程分支并更新该分支的 git 本地引用?例如,如果我这样做

$ git pull origin master

origin/master 合并到我当前的分支中。这也行不通

$ git fetch origin master

然后我检查

$ git branch -r -v
origin/HEAD   -> origin/master
origin/master 7cf6ec5 test 02

那个origin/master ref "7cf6ec5 test 02" 落后了。真正的起源/主人是“XXXXXX测试03”。 git fetch仅将更改拉入 FETCH_HEAD 它没有上传本地源/主参考。更新该参考的步骤是什么?

笔记:

$ git fetch origin

将获取所有远程参考并更新它们,但不幸的是(a)很多混乱。(我不希望别人的 30-50 个随机分支知道有人不想要我的)和(b)因为分支在原点被删除,所以下次我这样做时这些引用不会在本地被删除,git fetch origin这意味着路径结束加上杂物。

问题是,如何只获取一个分支并在本地更新其 ref?

4

3 回答 3

9

我想我要找的是这个

$ git fetch origin master:refs/remotes/origin/master

这似乎确实有效,与“git fetch origin master”不同,我确实看到 ref 得到了更新。

有什么理由是错误的答案?我应该害怕什么?

于 2012-12-18T08:14:12.580 回答
2

您始终可以为git fetch命令提供 refspec。特别是,如果你想更新other-branch,你可以这样做:

git fetch origin other-branch:other-branch

这将获取refs/heads/other-branchfrom origin 的当前提示,并将其放入同名的本地分支中。

另一种方法是继续:

git fetch origin other-branch

然后重新创建本地分支:

git branch -l -f other-branch -t origin/other-branch

作为-l安全机制存在。它将创建一个 reflog 条目,以便您可以在需要时返回到以前的版本。

于 2012-12-18T08:08:15.803 回答
1
git fetch origin

这将获取所有远程分支并为它们更新远程跟踪分支。

现在你可以做两件事之一

git checkout other-branch
git merge origin/other-branch
git checkout -

或者

git push . origin/other-branch:other-branch

如果您知道这将是一个快进合并,则最后一个选项是可以的。

于 2012-12-18T07:15:19.150 回答