变基后缺少提交

Missing commit after rebase

最近我 运行 遇到了一个非常奇怪的情况 GIT rebase。

我 b运行 很久以前就离开了 b运行ch 大师,正在研究我的功能代码。 GIT 历史看起来像这样:

A-B-C-D-E (master)
     \F1-F2-F3-F4 (feature)

功能 b运行ch 没有合并提交 - 只是简单的提交。

现在,当我使用 rebase 来更新我的代码时:

(feature) $> git rebase master

现在,你瞧,在我的 git 历史记录中,我只能看到我的功能 b运行ch 的 4 次提交中的 3 次。 中间那个F3不见了

A-B-C-D-E-F1'-F2'-F4' (feature)

F3 提交仅包含一个简单的单行开关,我能够快速检测到它,但是,如果它是一个更大的更改,或者更难找到会发生什么?

我尝试使用:

git rebase master --allow-empty

但效果是一样的——只有 3 次提交。

我手动做了一个实验运行:

> git checkout master
> git cherry-pick F1
> git cherry-pick F2
> git cherry-pick F3
> git cherry-pick F4

现在的效果是 ALL 的提交已成功应用到主 b运行ch - 正如预期的那样。

附加信息: 当我运行

git merge master

F1-F2-F3-F4 提交中包含的所有更改都反映在代码中。 (包括 F3 中的标志更改)

谁能给我解释一下那里发生了什么?

还有哪些其他实验可以让我运行找出问题所在?

git rebase 将每个要重新设置基准的提交引入的更改(是的,更改!)与自重新设置分支分支以来上游中的更改进行比较。看起来您的提交 DE 与您的重新设置的提交之一完全相同。

参见git patch-id