推送后压缩提交
Squashing commits after they are pushed
想象一个 git 存储库包含以下提交:
Fixed issue 3 123eabc
Fixed issue 2 (part 2) fa23b79
Fixed issue 2 (part 1) 7bea5cc
Fixed issue 1 0d229f4
这些都已经推送到远程主机了。现在有没有办法重写历史并将中间两个合并为一个提交?像
Fixed issue 3 123eabc
Fixed issue 2 9d23e0c
Fixed issue 1 0d229f4
一个选项是进行交互式变基,在其中将两个问题 2 提交压缩在一起。
git rebase -i HEAD~4
这告诉 Git 你想做一个涉及四个提交的交互式变基,包括并从你的分支的 HEAD 开始倒数。这应该会向您显示如下所示的列表:
pick 0d229f4 Fixed issue 1
pick 7bea5cc Fixed issue 2 (part 1)
pick fa23b79 Fixed issue 2 (part 2)
pick 123eabc Fixed issue 3
请注意,最旧 提交出现在第一,四个提交中最近的提交出现在最后[=35] =].
将要与第 1 部分合并的中间提交第 2 部分的 pick
更改为 squash
:
pick 0d229f4 Fixed issue 1
pick 7bea5cc Fixed issue 2 (part 1)
squash fa23b79 Fixed issue 2 (part 2)
pick 123eabc Fixed issue 3
压缩意味着将标有 squash
的提交合并到 上面 的提交中,在本例中是将第 2 部分合并到第 1 部分。
然后保存这个文件并退出编辑器,完成rebase。
注意: 重写 public 分支的历史可能会给使用该分支的除您之外的任何人带来问题。因此,如果这种情况适用于您,您甚至可能希望避免使用此答案。
想象一个 git 存储库包含以下提交:
Fixed issue 3 123eabc
Fixed issue 2 (part 2) fa23b79
Fixed issue 2 (part 1) 7bea5cc
Fixed issue 1 0d229f4
这些都已经推送到远程主机了。现在有没有办法重写历史并将中间两个合并为一个提交?像
Fixed issue 3 123eabc
Fixed issue 2 9d23e0c
Fixed issue 1 0d229f4
一个选项是进行交互式变基,在其中将两个问题 2 提交压缩在一起。
git rebase -i HEAD~4
这告诉 Git 你想做一个涉及四个提交的交互式变基,包括并从你的分支的 HEAD 开始倒数。这应该会向您显示如下所示的列表:
pick 0d229f4 Fixed issue 1
pick 7bea5cc Fixed issue 2 (part 1)
pick fa23b79 Fixed issue 2 (part 2)
pick 123eabc Fixed issue 3
请注意,最旧 提交出现在第一,四个提交中最近的提交出现在最后[=35] =].
将要与第 1 部分合并的中间提交第 2 部分的 pick
更改为 squash
:
pick 0d229f4 Fixed issue 1
pick 7bea5cc Fixed issue 2 (part 1)
squash fa23b79 Fixed issue 2 (part 2)
pick 123eabc Fixed issue 3
压缩意味着将标有 squash
的提交合并到 上面 的提交中,在本例中是将第 2 部分合并到第 1 部分。
然后保存这个文件并退出编辑器,完成rebase。
注意: 重写 public 分支的历史可能会给使用该分支的除您之外的任何人带来问题。因此,如果这种情况适用于您,您甚至可能希望避免使用此答案。