强制性警告:更改已推送到远程存储库的历史记录对于使用该存储库的其他人来说可能是一个巨大的头痛。
交互式变基将带您到达那里。
# start an interactive rebase onto the parent (~) of 'begin'
git rebase -i c7453d9~
交互式 rebase 会将您弹出到如下所示的编辑器中:
pick c7453d9 begin
pick 0a06037 test
pick d825b48 test2
pick c2ba4f3 version 0.1
如果您想保留所有提交中的所有更改但使它们看起来像一个提交,请将其更改为:
reword c7453d9 begin
fixup 0a06037 test
fixup d825b48 test2
fixup c2ba4f3 version 0.1
reword
将提示您更改提交消息(将其更改为“版本 0.1”),并将fixup
从提交中提取所有内容到上一个提交中。最终结果将是一个包含所有四个内容的提交。
完成同样事情的另一种方法:
pick c7453d9 begin
fixup 0a06037 test
fixup d825b48 test2
squash c2ba4f3 version 0.1
squash
将提交的内容拉入上一个提交,但允许您更改提交消息(在本例中为“版本 0.1”)。
如果您想完全放弃前三个提交的更改并只保留最后一个提交的更改,请将 rebase 行更改为:
pick c2ba4f3 version 0.1
本质上,删除前三行。最终结果将只是“版本 0.1”提交,没有来自先前提交的任何内容。
修改历史记录后,您需要使用--force
.