我的提交历史记录如下:
A - B - C
现在我希望文件保持不变,但我发现提交B
是不必要的。
所以我希望历史成为:
A - C
保持 B
引入的更改。
这可能吗?
答案 0 :(得分:2)
你可以压缩提交B和C.运行git rebase -i sha1_of_A
。它将打开一个包含提交列表的文本编辑器。将fixup
放在C commit的行上,保存并退出。
会发生什么:
一开始你有:
A -B - C
L HEAD
合并提交后,您将拥有:
A - B - C
\ C'
L HEAD
其中C和C'将具有相同的文件。
这意味着:
B
和C
实际上并没有丢失,所以如果您有一些蠢货,您可以回复它答案 1 :(得分:2)
这样做的一个简单方法是进行交互式rebase,并将两个提交压缩在一起:
$ git rebase -i A
这将显示一个具有如下屏幕的编辑器:
pick A commit message
pick B commit message
pick C commit message
# Rebase A..C onto A
简单阅读可用选项,在编辑器中修改文件,例如:
pick A commit message
squash B commit message
pick C commit message
pick A commit message
pick B commit message
squash C commit message
使用squash允许您根据自己的喜好修改提交消息(例如,使用C的提交消息和结果提交),如果提交消息不重要,您可以使用fixup
。< / p>