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

Git合并dev到main后此前被revert的两个提交未同步,如何处理?

问题根因

你之前将dev合并到main后,在main分支执行对应两个提交的revert操作时,git会将这两个revert生成的提交纳入main的提交历史,默认标记「这两个提交的改动已经被主动弃用」。后续再次合并dev分支时,git检测到那两个原始提交已经存在于main的提交链路中,就不会重复应用它们的改动,因此你看不到对应的变更。

解决方案

方案1:在main分支反向撤销之前的revert操作(最安全,优先推荐)

该方案不会修改任何分支的历史提交,适合多人协作的公共仓库场景:

  • 先切换到本地main分支并同步最新远程代码:
    git checkout main && git pull origin main
  • 查找之前在main分支执行revert时生成的两个revert提交的哈希值,可通过git log --oneline检索,通常这类提交的描述前缀为Revert "原提交描述",记为哈希值哈希1、哈希2
  • 反向撤销这两个revert提交,即可把之前被删掉的改动再加回来:
    git revert 哈希1 哈希2
    执行时如果有冲突,解决冲突后执行git revert --continue即可
  • 把本地修改推送到远程main分支:
    git push origin main

方案2:在dev分支重新生成对应提交

如果不想在main分支新增revert相关的提交记录,可选择在dev分支重新生成这两个改动的新提交,后续合并时会正常带入main:

  • 切换到本地dev分支并同步最新远程代码:
    git checkout dev && git pull origin dev
  • 查找最早那两个被revert的原始提交的哈希值,记为原哈希1、原哈希2
  • 把这两个提交的改动重新复制为dev上的新提交:
    git cherry-pick 原哈希1 原哈希2
    执行时如果有冲突,解决冲突后执行git cherry-pick --continue即可
  • 把dev的改动推送到远程后,正常走dev合并到main的流程即可,改动会正常生效
注意事项
  • 如果那两个原始提交的改动已经被dev后续的提交覆盖或修改,优先选方案2,cherry-pick时可同步调整代码适配当前dev的逻辑
  • 公共仓库场景下不要随意修改已经推送到远程的main、dev等公共分支的历史提交,避免其他协作人员拉代码时出现冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:27:04