git revert遇到冲突时会暂停并进入待解决状态,需手动编辑冲突文件、用git add标记已解决、再执行git revert --continue完成;若放弃则用git revert --abort恢复原状。

git revert 遇到冲突时会停在中间状态
执行 git revert 时如果目标提交的修改与当前代码有重叠(比如同一行被后续提交改过),Git 无法自动反向应用,就会中断并提示 CONFLICT (content)。这不是命令失败,而是进入“冲突待解决”状态——此时 HEAD 仍指向原提交,但工作区和暂存区已部分应用反向修改,且冲突文件被标记为 Unmerged。
手动编辑冲突文件后必须用 git add 标记解决
冲突文件里会出现标准的三段式标记:、<code>=======、>>>>>> [revert-commit-hash]。你得删掉这些标记,只保留最终要保留的内容(通常是保留当前版本,删掉 revert 想恢复的旧内容)。
关键点:
- 改完一个文件后,必须运行
git add <file></file>,否则 Git 不知道你已解决 - 不能只改文件就直接
git commit—— 这会创建一个普通提交,不是 revert 的一部分 - 如果有多个冲突文件,每个都得
git add,缺一个都会卡住 - 全部加完后,再运行
git revert --continue才能完成整个 revert 流程
想放弃 revert 就用 git revert --abort
中途发现搞错了,或者冲突太多不想继续?别硬着头皮改。直接运行:
|Git删除了文件,但还会在Git 仓库历史中遗留。 - 想要从 Git 历史移除敏感信息(密码、密钥、token、私钥) - 想要删除意外提交的大文件 - 想要重写 Git 历史、移除特定文件的所有痕迹 - 提到 "force push"、"重写 commit 历史" - 需要从所有分支、所有 tag 中删除某个文件
git revert --abort
这会把工作区和暂存区恢复到 git revert 执行前的状态,所有中间改动全丢,就像没执行过一样。注意它不会影响你原来的提交历史,也不会动 git reflog 里的记录。
常见误操作:
- 用
git reset --hard强退 —— 可能误删还没提交的 revert 中间状态,甚至波及其他未保存修改 - 直接关终端或 Ctrl+C 后不处理 —— 下次
git status会持续显示 “You are currently reverting commit …”,不清理没法做其他操作 - 以为
git stash能救 —— stash 对这种半途的 revert 状态无效,得先--abort或--continue
多人协作分支上 revert 冲突要格外小心
如果你在 main 或 develop 这类共享分支上 revert,而同事刚推送了新提交,那你的 revert 冲突很可能是因为你们改了同一块逻辑。这时候光解决文件冲突不够,得确认业务语义:
- 对方的新提交是否已经覆盖了你要 revert 的问题?如果是,可能根本不需要 revert
- revert 后生成的新提交,会不会和对方刚推的代码产生二次逻辑冲突?建议 revert 前先
git pull同步最新状态 - 如果 revert 提交已推送到远程,别人再基于它开发,你又 abort 了本地 revert,记得同步告知,避免对方基于一个“不存在”的 revert 提交继续工作
最易被忽略的一点:revert 本身是提交,它一旦 push 出去,就成为历史的一部分;abort 只作用于本地,不会撤回已推送的 revert 提交。

















