假设我有小时提交
* 7bd4815 (HEAD) four
* afe9410 third
* db064dd second
* 46ab932 first
没有未提交的更改。我想做的是非交互式地将first
之后的所有东西压入其中。我想要相当于
pick 46ab932 first
fixup db064dd second
fixup afe9410 third
fixup 7bd4815 four
这里我以四个提交为例,但实际的提交数量会有所不同。不过,我会知道提交的哈希值,所以这就是我想要使用的内容。
搜索到这一点毫无结果(我可能没有找到正确的术语),因为我找到了很多解决方案,但从未遇到过这种情况。
答案 0 :(得分:2)
此解决方案类似于我对Combine or rebase an arbitrarily large number of commits的解决方案。你基本上想要使用软重置来实现与squash / fixup相同的效果,然后是提交。
对于以下解决方案,我将使用术语“first”表示第一次提交的提交sha(如原始海报的示例中所示),而“4th”表示最后一次提交sha,即HEAD中的提交是
git reset --soft first
git commit --amend --no-edit
# Verify results
git diff fourth
这要求您重置为第一次提交的父级,以避免必须修改:
git reset --soft first^
git commit -C first
# Verify results
git diff fourth
-C
的{{1}}选项重用git commit
的提交消息。