rebase不会忽略具有相同文本更改的提交?

时间:2014-11-12 02:05:16

标签: git rebase

git rebase联机帮助页显示:

  

如果未指定<upstream>,则将使用branch.<name>.remotebranch.<name>.merge选项中配置的上游;

     

[...]

     

然后,先前保存到临时区域的提交将按顺序逐个重新应用于当前分支。请注意,HEAD中引入与HEAD..<upstream>中的提交相同的文本更改的任何提交都将被省略(即,将跳过已使用不同提交消息或时间戳的上游接受的修补程序)。

事实上,当我调用git rebase master并且master中的提交具有与我本地分支历史记录相同的文本更改时,它将被忽略。但是,我发现当我在没有指定git rebase(默认为<upstream>)的情况下调用master时,git rebase的输出似乎显示相同的提交不存在忽略。

实施例

这是一个证明这一点的例子。这是git历史:

A---B master
 \
  B' topic

BB'引入相同的文本更改,但具有不同的提交消息。 topic已设置为跟踪master

首先,我在提供topic时重新<upstream>

$ git checkout topic
$ git rebase master
First, rewinding head to replay your work on top of it...

正如预期的那样,没有任何事情发生,因为BB'是差异相同的。

但是,如果我省略<upstream>

$ git checkout topic
$ git rebase
First, rewinding head to replay your work on top of it...
Applying: Branch: topic
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
No changes -- Patch already applied.

似乎git在第二个输出中没有跳过B'。有人可以解释一下这种差异吗?

(我使用git版本1.9.4)

0 个答案:

没有答案