Git操作求助:撤销远程合并并保留本地更新的正确方法
解决步骤
1. 撤销本地拉取产生的合并,恢复到本地修改的提交
从你的Git日志来看,标注「Local changes to dev」的本地修改提交是 3d28f9a(也就是合并提交26d51b0的第一个父节点)。执行以下命令强制回退到该提交,完全恢复本地修改后的状态:
git reset --hard 3d28f9a
这个操作会丢弃掉之后的拉取合并提交,让本地dev分支回到你未拉取远程变更前的状态。
2. 推送本地修改到远程dev分支
由于远程已经撤销了之前的legacy合并,当前远程dev的状态是合并操作前的节点。此时你的本地dev已领先于远程,直接推送即可:
git push origin dev
如果推送时提示远程有未同步的变更(比如残留的撤销痕迹),可以用更安全的强制推送命令(确保团队内无人在远程dev上有未提交的修改):
git push origin dev --force-with-lease
--force-with-lease会检查远程分支是否有你未知的新提交,避免误覆盖他人的修改。
3. 重新合并legacy分支到dev
现在本地和远程dev已同步你的本地修改,接下来重新执行合并操作:
- 拉取最新的legacy分支:
git fetch origin legacy
- 确保当前在dev分支(已在dev则跳过):
git checkout dev
- 合并legacy到dev:
git merge origin/legacy
如果合并出现冲突,手动解决冲突后提交即可。
4. 解决PR提示同步的问题
之前PR提示dev与legacy已同步,是因为远程曾合并又撤销,导致Git提交历史存在残留记录。现在基于最新的dev修改重新合并后,提交历史已更新,再次发起PR时Git会正确识别分支差异,不会再出现错误提示。
内容的提问来源于stack exchange,提问作者Kepler7894i
相关产品推荐
相关产品推荐

