我有一个特殊的提交日志,看起来像那样,
A --> B --> C --> D
其中每个字母都是提交。看来C是B的回复,所以基本上历史与
相同A --> D
有没有办法“总结”B和C提交?这些变化尚未推出。
答案 0 :(得分:3)
您可以执行git rebase -i HEAD~3
并删除代表TODO列表中B
和C
提交的行并执行rebase。
答案 1 :(得分:1)
除了交互式rebase,一个简单的方法是:
git reset --hard A # reset current branch to A
git cherry-pick D # transplant commit D here
还有一个更通用的命令,当C-D是一系列提交时,它会更好地工作:
git rebase --onto A C # transplant C..D onto A
答案 2 :(得分:0)
最简单的方法是重置:
git reset --soft HEAD^^^
git add -A
git commit -C HEAD@{1}
第一个命令使A成为当前提交,同时保持工作树,就像在D中一样。我们使用下一个命令暂存工作树的状态。接下来,我们使用commit D(其中HEAD是1次)的消息提交。