拉取与提取 + 合并

  • 本文关键字:合并 提取 git
  • 更新时间 :
  • 英文 :


>我到处都看到拉取是获取+合并。 但是如果我明确指定源分支,如

(1) git pull origin somebranch

(2) git fetch origin somebranch
    git merge origin/somebranch

只有调用 (2) 会更新我的远程跟踪分支。 调用 (1) 仅在合并到我当前分支之前更新FETCH_HEAD。 这两种行为都与其各自的文档一致。 它们只是彼此不一致(在指定源分支的情况下)。

在拉动的情况下,跳过远程跟踪分支的动机是什么? 为什么我要将远程跟踪分支留在本地分支后面?

1.8.4 git-pull手册页的第二个示例确认了不更新远程跟踪分支的行为。 但它没有解释为什么。

git fetch的行为在 1.8.4 中发生了变化。现在,如果存在这样的引用,则明确提到的 ref 会更新其本地跟踪引用。

这是发行说明中提到的更改。

我已经测试过,git pull origin master现在确实更新了我的origin/master跟踪参考,并且仍然与git fetch origin master的新行为一致。

我认为对"为什么"最合理的解释是"歇斯底里的葡萄干",呃,历史原因。

这在"git pull origin mybranch"中被顺便提到,让本地mybranch N提交在origin之前。为什么?而 git pull origin master 不更新 origin/master?:当 git pull 调用 git fetch 时,它会传递阻止git fetch更新refs/remotes/remote/branchname的参数。 [编辑:正如查尔斯·贝利(Charles Bailey)所指出的,从1.8.4开始,这个历史怪异现在已经修复。

branch.name.remotebranch.name.mergerefs/remotes/remote/branch跟踪分支的相当尴尬和复杂的映射补充了git pull无法更新远程分支头的方式的尴尬(如果这有任何意义:-))。

最新更新