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