WebStorm解决Git冲突的核心是“在哪点、点什么、点完还缺哪步”:冲突文件在Version Control窗口红色Merge Conflicts节点中;双击打开三向视图,左为Mine(当前分支)、右为Theirs(待合入分支)、中为Base及编辑区;点Apply仅写回文件,还需右键Add并提交,否则仍为unmerged状态。

WebStorm 解决 Git 冲突的核心不是“能不能”,而是“在哪点、点什么、点完之后还缺哪步”——漏掉任意一环,文件就永远卡在冲突状态,git status 里持续显示 unmerged,提交会直接失败。
冲突文件在哪?别翻项目树,看 Version Control 窗口
冲突不会混在“未提交更改”里,也不会靠颜色猜。打开 Version Control 工具窗口(默认快捷键 Alt+9),找那个标红的 Merge Conflicts 节点。它独立存在,点开即见所有冲突文件。
如果没看到这个节点,说明:
-
git merge命令根本没执行成功(比如分支不存在或网络中断) - 目标分支其实没有新提交,Git 根本没触发冲突检测
- 你当前不在要合并到的目标分支上(WebStorm 不会自动切换分支)
三向合并视图里,Mine 和 Theirs 到底谁是谁?
双击冲突文件打开三向视图后:
- 左边是
Mine:你当前分支的本地修改(不是“你写的代码”,而是你 checkout 的那个分支的 HEAD) - 右边是
Theirs:你要合并进来的那个分支的最新内容(比如你在main上 mergefeature/login,右边就是feature/login的改动) - 中间是
Base:两个分支共同祖先版本,也是你最终要提交的内容所在编辑区
这个左右顺序固定,不随你当前在哪操作而变。右键高亮块时,“Resolve using Mine” 是删右边、“Resolve using Theirs” 是删左边,不是“保留我写的”或“保留他写的”这种模糊说法。
|Git删除了文件,但还会在Git 仓库历史中遗留。 - 想要从 Git 历史移除敏感信息(密码、密钥、token、私钥) - 想要删除意外提交的大文件 - 想要重写 Git 历史、移除特定文件的所有痕迹 - 提到 "force push"、"重写 commit 历史" - 需要从所有分支、所有 tag 中删除某个文件
Apply All Non-Conflicting Changes 按钮到底干了什么?
它只合并左右两边完全不重叠的行,对任何带 / <code>======= / >>>> branch-name 标记的区域完全不动。它不删标记、不改逻辑、不判断函数是否兼容。
常见误操作:
- 点了这个按钮就以为“已解决”,结果中间面板里还躺着三行冲突标记 ——
git add会失败,git commit直接报错 - 用
Resolve simple conflicts一键处理后,没检查中间面板是否残留空行、缩进错位或 import 冗余,导致后续 CI 报格式错误 - 选了
Resolve using Mine,但右边改的是接口返回字段,左边删的是调用方,合并后编译过、运行崩
建议点完 Apply 后,立刻按 Ctrl+Alt+O(Optimize Imports)和 Ctrl+Alt+L(Reformat Code),再手动扫一眼中间面板有没有漏删的冲突标记。
点完 Apply 就完事了?远没结束
Apply 只是把中间面板内容写回文件,并不等于 Git 认可该文件已解决。你还必须做两件事:
- 右键该文件 →
Git→Add(或按Ctrl+K打开提交窗口,勾选它)—— 这步让 Git 把文件从unmerged状态移出 - 提交后,别忘了
VCS → Git → Push,否则别人拉不到你的合并结果
最容易被跳过的其实是 Add。很多人以为“中间面板改完 = 文件已 clean”,结果 git status 依然红着,git commit 提示 “please stage your changes”。

















