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

如何回退Git中被后续PR修改文件的旧Pull Request

嘿,这个场景我太熟了!当你要回退的PR(比如PR3)之后,有其他PR(PR4、PR5)改了同一个文件,Git的自动回退就会因为内容冲突卡壳,弹出那个恼人的提示。别慌,咱们手动操作几步就能搞定,具体步骤如下:

手动回退已被后续PR修改的Pull Request

1. 找到PR3的合并提交哈希

首先得定位到PR3合并时生成的合并提交哈希值。你可以在PR的详情页面里找到(一般在合并记录的下方),或者用命令行查看日志:

git log --oneline

在输出里找到PR3合并的那条记录,复制它的7位短哈希(比如a1b2c3d)——注意要找的是合并提交,不是PR里的单个提交哦。

2. (可选但推荐)创建新分支隔离操作

为了避免直接在主分支上操作出问题,先切一个专门用于回退的分支:

git checkout -b revert-pr3-fix

3. 发起手动回退命令

用git revert命令加上-m 1参数(合并提交有两个父节点,-m 1表示回退到合并前的主分支状态):

git revert -m 1 <PR3的合并提交哈希>

这时候Git会立刻提示冲突,因为PR4、PR5已经修改了同一文件,这是正常的,接下来咱们解决冲突就行。

4. 手动解决文件冲突

打开提示冲突的文件,你会看到类似这样的冲突标记:

<<<<<<< HEAD
// 这里是PR4、PR5修改后的内容
=======
// 这里是PR3合并前的原始内容(也就是回退PR3后要保留的基础内容)
>>>>>>> revert of a1b2c3d

你的目标是回退PR3的修改,同时保留PR4、PR5的有效更改,所以仔细对比两边的内容:

  • 如果PR3的修改是新增/修改了某段代码,而PR4、PR5在这段代码上又做了调整,你需要保留PR4、PR5的版本,去掉PR3带来的变化;
  • 如果冲突是因为PR3删除了内容,而PR4、PR5又修改了那段内容,你需要恢复PR3删除前的内容,同时整合PR4、PR5的修改。

编辑完文件后,删除所有冲突标记(<<<<<<<、=======、>>>>>>>),然后用命令标记冲突已解决:

git add <冲突文件名>

5. 完成回退提交

解决完所有冲突后,继续完成回退操作:

git revert --continue

这时候会弹出文本编辑器让你填写提交信息,默认的信息已经很清晰了,直接保存退出就行。如果中途想放弃回退,执行git revert --abort就能回到操作前的状态。

6. 推送回退分支并合并

现在你的回退分支已经包含了正确的回退提交,把它推送到远程仓库:

git push origin revert-pr3-fix

然后在你的代码托管平台上开一个新的Pull Request,把这个回退分支合并到主分支。等审核通过后,PR3的修改就被成功回退,同时PR4、PR5的更改也保留下来了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:25:16