在散列之前压缩提交

Squash commits before hash

我 fork 了一个快速启动 repo 并在其上构建了一个应用程序。快速启动回购包含约 30 次提交。他们 repo 的最后一次提交是 abcde 而我的第一次提交是 fghij。我如何压缩所有提交,从第一个到 abcde,以便在 fghij.

之前只有一个大提交

请您逐行解释一下。我不明白类似主题下的其他答案。

现在的提交历史树示例:

klmno - Currently newest commit
.
.
.
fghij - Initial commit of mine
abcde - Last commit made by them
.
.
vwxyz - Initial commit of theirs

预期提交的示例历史树:

klmno - Currently newest commit
.
.
.
fghij - Initial commit of mine
prstu - Fresh X installation

首先进入git的交互式变基模式——注意在这种特殊情况下,你必须指定特殊选项--root来编辑根(第一次)提交,这通常不是git rebase 命令允许:

git rebase -i --root

如果您还没有配置 EDITOR 环境变量,您将进入 git 的默认文本编辑器,我认为它始终是 vi。如果您不理解 vi,请键入 :q 退出并再次启动该过程 - 这次,将 EDITOR 设置为您知道如何使用的文本编辑器的名称。

在 git 给你编辑的交互式 rebase 文件中,将提交的所有行从 second 提交更改为 abcde 以开始使用单词 fixup 而不是 pick。保留您的提交行和第一次提交行,保持不变。

保存文件并退出文本编辑器。 git 现在会将原始存储库的提交压缩为一个提交。