You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以非交互方式合并两个非连续的Git提交?

非交互合并两个非连续提交并复用原始提交信息

有两种非交互的方法可以实现你的需求,具体步骤如下:

方法一:临时分支+Cherry-pick合并提交

这种方法适合快速生成合并后的提交,再整合回原分支:

  • 创建临时分支(以原分支main为例):
    git checkout -b merge-temp main
    
  • 提取第一个提交的修改并自动提交:
    git cherry-pick abc123
    
  • 提取第二个提交的修改但不自动提交:
    git cherry-pick --no-commit def456
    
  • 提取两个原始提交的完整信息并保存到临时文件:
    git log --format=%B abc123 def456 > commit_msg.txt
    
  • 用保存的提交信息完成合并提交:
    git commit -F commit_msg.txt
    
  • 将合并后的提交整合回原分支:
    git checkout main
    git cherry-pick merge-temp
    
  • 清理临时分支和临时文件:
    git branch -D merge-temp
    rm commit_msg.txt
    

方法二:Rebase配合批量Cherry-pick

如果需要保留原分支的其他提交历史,可采用这种方法:

  • 假设def456是更早的提交,基于它的父提交创建临时分支:
    git checkout -b merge-temp def456~1
    
  • 批量提取两个提交的修改但不自动提交:
    git cherry-pick --no-commit def456 abc123
    
  • 提取并保存两个原始提交的信息:
    git log --format=%B def456 abc123 > commit_msg.txt
    
  • 完成合并提交:
    git commit -F commit_msg.txt
    
  • 将原分支中def456之后的提交迁移到合并提交之后:
    git checkout main
    git rebase --onto merge-temp def456
    
  • 清理临时分支和临时文件:
    git branch -D merge-temp
    rm commit_msg.txt
    

注意事项

  • 如果两个提交存在冲突,非交互模式下无法自动解决,需要提前手动处理冲突后再继续操作。
  • --format=%B 参数会完整保留原始提交的标题和正文内容,确保提交信息被完整复用。

内容的提问来源于stack exchange,提问作者nabik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:00:01