如何压缩git提交历史直到5次提交

如何压缩git提交历史直到5次提交,git,github,git-rebase,git-reset,squash,Git,Github,Git Rebase,Git Reset,Squash,我的回购协议有大量的提交,我想将所有内容压缩到最后五次提交,因此在最后回购协议将压缩一次提交,然后压缩我最近的五次提交 之前: 10 9 8 7 6 5 4 3 2 1 之后: 10 9 8 7 6 squash commit 我尝试了git reset——在压缩部分的末尾和开头使用soft,但我不确定如何保持我的最后五次提交,当我在五次提交之前压缩该部分时,这五次提交就会消失 使用git-rebase-i--root。(如果您的git不够新,无法在其交互式重新基址中包含--root,这会让

我的回购协议有大量的提交,我想将所有内容压缩到最后五次提交,因此在最后回购协议将压缩一次提交,然后压缩我最近的五次提交

之前:

10
9
8
7
6
5
4
3
2
1
之后:

10
9
8
7
6
squash commit
我尝试了git reset——在压缩部分的末尾和开头使用soft,但我不确定如何保持我的最后五次提交,当我在五次提交之前压缩该部分时,这五次提交就会消失

使用
git-rebase-i--root
。(如果您的git不够新,无法在其交互式重新基址中包含
--root
,这会让您更痛苦,因为您必须首先创建一个“孤立”分支。)您将看到一个文件上的编辑器会话,如下所示:

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

# Rebase ...
# [commentary with instructions]
将提交2到5更改为“挤压”,保存并退出编辑器,然后重新基址将提交2到5挤压为提交1的副本,然后添加提交6到10的副本。最终的回购将有最终提交的副本(并且没有原始提交,它们仍然在那里,只是现在不可见,最终将被垃圾收集)


(您也将有机会修复压缩提交的提交文本。)

这可能不是一个好主意,因为它将更改所有提交的提交哈希,包括未压缩的提交。除非你是唯一一个在存储库上工作的人,否则你很容易就会遇到麻烦。你真的想挤压提交,还是只是截断你的历史记录?是的,我是目前唯一一个我以前见过这种问题的人。这是一个复制品。让我找到另一个…@torek啊,这是个好发现。@torek如果我像复制品一样关闭,我会像复制品一样关闭。你会考虑“压扁一切除了最后一个X”的问题,就像“壁球初始Y提交”的问题一样吗?