1

我的 repo 有大量的提交,我想压缩所有内容,直到最后五个提交 - 所以最后 repo 将有一个 squash 提交,然后是我最近的五个提交。

前:

10
9
8
7
6
5
4
3
2
1

后:

10
9
8
7
6
squash commit

我在压缩部分的末尾和开头尝试了 git reset --soft ,但我不确定如何保留最后五个提交,当我在五个之前压缩部分时,这些提交就消失了。

4

1 回答 1

1

使用git rebase -i --root. (如果你的 git 不够新,不能--root在它的交互式 rebase 中使用,那会有点痛苦,因为你必须首先创建一个“孤儿”分支。)你将看到一个文件的编辑器会话,如下所示:

pick b9491ea commit-10
pick d1574b8 commit-9
...
pick ab31c0f commit-1

# Rebase ...
# [commentary with instructions]

将提交 2 到 5 更改为“squash”,保存,退出编辑器,rebase 会将提交 2 到 5 压缩到提交 #1 的副本中,然后添加提交 6 到 10 的副本。生成的 repo 将包含最终提交(并且没有任何原始提交——嗯,它们仍然在那里,只是现在不可见,最终将被垃圾收集)。

(您也将有机会修复 squashed-commit 的提交文本。)

于 2014-07-22T23:06:52.203 回答