我的repo有大量的提交,我想将所有内容压缩到最后五次提交 - 所以最后repo会有一个提交,然后是我最近的五次提交。
在:
10
9
8
7
6
5
4
3
2
1
后:
10
9
8
7
6
squash commit
我尝试了git reset --soft在结束和开始被压扁的部分,但我不知道如何保留我的最后五个提交,当我在五个之前压缩部分时它会消失。
答案 0 :(得分:1)
使用git rebase -i --root
。 (如果你的git不够新,不能在其交互式rebase中使用--root
,那么你必须先创建一个" orphan"分支会更加痛苦。)你将会这样做。在一个文件的编辑器会话上显示如下:
pick b9491ea commit-10
pick d1574b8 commit-9
...
pick ab31c0f commit-1
# Rebase ...
# [commentary with instructions]
将提交2到5更改为"压缩",保存,退出编辑器,并且rebase将提交2到5压缩到提交#1的副本,然后添加提交6到10的副本。由此产生的repo将包含最终提交的副本(并且没有任何原始提交 - 好吧,它们仍然在那里,现在只是隐形,最终将被垃圾收集)。
(你也有机会解决压扁提交的提交文本。)