如何将 A 和 K 之间的提交压缩为一个提交 Z

tim*_*tei 5 git squash

如果我有这样的提交历史:

A-B-C-------G-H-J-K   (master)
     \     /
      D-E-F
Run Code Online (Sandbox Code Playgroud)

如何将 A 和 K 之间的提交压缩为一个提交 Z:

A-Z-K   (master)
Run Code Online (Sandbox Code Playgroud)

?

Dan*_*rth 5

首先,执行:

git rebase -i A
Run Code Online (Sandbox Code Playgroud)

这将在文本编辑器中显示提交列表,以 B 开头并以 K 结尾。
您必须将pick提交 C、D、E、F、H 和 J 前面的文本更改为ssquash。不要在 B 或 K 前面进行更改。请注意,提交 G 应该丢失,因为它是合并提交pick

最后,保存并退出编辑器。这将开始实际的变基。

结果将是这样的:

A-Z-K'                   (master)
 \
  B-C-------G-H-J-K      (no branch)
     \     /
      D-E-F
Run Code Online (Sandbox Code Playgroud)

不属于任何分支的部分最终将被垃圾收集删除。