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

Git父分支丢弃提交后,如何同步提交日志至子分支以完成合并?

commit image

问题:

如上图所示,Branch1(Br1)已丢弃提交C,但Branch2(Br2)仍保留该提交,请问在需要将Br2合并到Br1时,如何同步提交日志至Br2?

解决方案

要让Br2的提交日志和Br1对齐(移除提交C),可以用以下两种方式:

方式一:交互式变基改写历史

  1. 切换到Branch2分支:
    git checkout Br2
    
  2. 基于Branch1的最新提交执行交互式变基:
    git rebase -i Br1
    
  3. 在弹出的文本编辑器中,找到对应提交C的行,将行首的pick替换为drop,保存并退出编辑器。
  4. 如果变基过程中出现冲突,手动解决冲突后执行以下命令继续变基:
    git rebase --continue
    
  5. 若Br2是远程分支,需要强制推送覆盖远程历史(注意:强制推送会改写远程分支历史,需确保团队成员都知晓并同步操作):
    git push -f origin Br2
    

方式二:重置后重新整合提交

如果Br2在提交C之后还有其他需要保留的提交,可以用重置+ cherry-pick 的方式:

  1. 切换到Branch2分支:
    git checkout Br2
    
  2. 将Br2强制重置到Branch1的最新提交节点:
    git reset --hard Br1
    
  3. 把Br2原本在提交C之后的提交(比如提交D、E)逐个 cherry-pick 到当前分支:
    git cherry-pick <提交D的哈希值> <提交E的哈希值>
    
  4. 同样,若需同步到远程,执行强制推送(注意事项同上):
    git push -f origin Br2
    

注意事项

以上操作均会改写Git提交历史,若Branch2是多人协作的公共分支,务必提前和团队成员沟通,避免造成代码历史混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:56:41