3

假设我有小时提交

* 7bd4815 (HEAD) four
* afe9410 third
* db064dd second
* 46ab932 first

没有未提交的更改。我想做的是以非交互方式将 , 之后的所有内容压缩first到其中。我想要相当于

pick 46ab932 first
fixup db064dd second
fixup afe9410 third
fixup 7bd4815 four

这里我以四次提交为例,但实际的提交次数会有所不同。不过,我会知道提交的哈希,所以这就是我想要使用的。

搜索这个没有结果(我可能没有搜索正确的术语),因为我找到了很多解决方案,但从来没有找到这种确切的情况。

4

1 回答 1

2

这个解决方案类似于我的解决方案来组合或变基任意大量的提交。您基本上想使用软重置来实现与 squash/fixup 相同的效果,然后是提交。

对于以下解决方案,我将使用术语“first”来表示第一次提交的提交 sha(如原始发布者的示例所示),“fourth”表示最后一次提交 sha,即 HEAD 所在的那个。

解决方案 1:带修正的软重置

git reset --soft first
git commit --amend --no-edit

# Verify results
git diff fourth

解决方案 2:无需修改的软重置

这需要您重置为第一个提交的父级,以避免修改:

git reset --soft first^
git commit -C first

# Verify results
git diff fourth

-C选项git commit重用 的提交消息first

文档

于 2014-06-27T15:46:29.183 回答