变基后缺少提交
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
将每个要重新设置基准的提交引入的更改(是的,更改!)与自重新设置分支分支以来上游中的更改进行比较。看起来您的提交 D
、E
与您的重新设置的提交之一完全相同。
参见git patch-id。
最近我 运行 遇到了一个非常奇怪的情况 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
将每个要重新设置基准的提交引入的更改(是的,更改!)与自重新设置分支分支以来上游中的更改进行比较。看起来您的提交 D
、E
与您的重新设置的提交之一完全相同。
参见git patch-id。