重新设置基准后缺少提交

时间:2019-12-14 12:12:27

标签: git commit rebase

最近,我在使用GIT rebase时遇到了一个非常特殊的情况。

很久以前,我从master分支分支出来,正在研究我的功能代码。 GIT历史看起来像这样:

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

在功能分支上没有合并提交-只是简单的简单提交。

现在,当我使用rebase通过以下方式更新代码时:

(feature) $> git rebase master

现在,瞧瞧,在我的git历史记录中,我只能看到我的功能分支的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

现在的效果是,所有个提交已成功地应用到master分支上了-如预期的那样。

其他信息: 跑步

git merge master

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

有人可以向我解释那里发生了什么事吗?

我还可以进行哪些其他实验来找出问题所在?

1 个答案:

答案 0 :(得分:2)

git rebase将要重新建立基础的每个提交所引入的变更(是的,变更!)与自从重新建立分支以来的上游变更进行比较。看起来您的一个提交DE看起来与您的一个重新提交的提交完全相同。

请参见git patch-id