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

如何实现Git非修改源分支的类Rebase合并(类似GitHub PR选项)

实现不修改source分支的Rebase式合并到当前target分支

你想要的效果是将source分支中未在target分支存在的提交批量应用到当前target分支,同时不改动source分支,这可以通过以下两种简洁的方式实现:

方法一:使用git cherry-pick批量应用提交

直接在当前target分支执行以下命令,它会自动把source分支相对于target的所有新提交依次应用到当前分支:

git cherry-pick $(git merge-base target source)..source
  • 如果遇到冲突,解决冲突后执行git cherry-pick --continue即可继续后续提交的应用,流程和git rebase一致。
  • 若想放弃操作,执行git cherry-pick --abort。

方法二:临时分支配合git rebase(更贴合Rebase体验)

这种方式完全模拟GitHub的Rebase合并逻辑,且不会修改source分支:

# 当前处于target分支
git checkout -b temp source  # 基于source创建临时分支
git rebase target           # 将临时分支重定基到target上,重演所有新提交
git checkout target         # 切回target分支
git merge --ff-only temp    # 快进合并临时分支,将重定基后的提交同步到target
git branch -D temp          # 删除临时分支

关于git rebase --onto的补充

你之前尝试的git rebase --onto命令之所以不符合需求,是因为该命令默认会修改指定的目标分支(比如source)。若要通过它实现需求,本质还是需要借助临时分支,和方法二的逻辑一致,并没有更简洁的写法。因此上面两种方法是更直接的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:02:52