如何将两个分支的提交按作者日期交错合并为线性历史?
按作者日期线性合并多分支提交到main的高效方法
你可以通过批量按作者日期排序的cherry-pick实现,不用手动逐个选择提交,步骤如下:
- 切换到main分支:
git checkout main
- 执行批量cherry-pick命令,自动按作者日期从早到晚合并a、b分支的所有提交:
git cherry-pick $(git log --reverse --author-date-order --format="%H" main..a main..b)
命令说明:
git log --reverse --author-date-order --format="%H" main..a main..b:main..a和main..b:筛选出a、b分支上不在main中的提交--author-date-order:按作者实际提交日期排序(而非提交被合并到分支的日期)--reverse:将排序结果反转成从早到晚的顺序--format="%H":仅输出提交的完整哈希值,作为cherry-pick的执行参数
如果过程中遇到冲突,解决冲突后执行git cherry-pick --continue即可继续后续提交的合并,和手动cherry-pick的冲突处理逻辑一致。
这种方法完全替代了手动逐个选择提交的操作,自动按作者日期完成线性历史构建,最终main分支会呈现你想要的线性结构。
内容的提问来源于stack exchange,提问作者mdcq
相关产品推荐
相关产品推荐

