在终端里撞见 Auto-merging xxx.js 后紧跟着 CONFLICT (content),多少会有点头大。眼睛在一堆 <<<<<< HEAD 和 >>>>>> feature-login 的标记中来回扫,还得手工删除分隔符,修复逻辑冲突,更怕一个不留神改错了导致测试挂掉。其实,最简单的办法是把这块冲突内容直接复制出来,扔给 ChatGPT,让它帮你分析差异、给出安全的合并建议,甚至直接生成清理好的代码。
把冲突文件内容完整复制给ChatGPT
打开任何一个标记了冲突的文件(比如 src/utils/date.js),从第一个 <<<<<< HEAD 开始,一直拖到最后一个 >>>>>> feature-login 结束,连中间所有代码和分隔符一块儿复制。这里有个操作要点:必须把三行标记本身也包含进去,不能只复制冲突块内部的代码片段。否则 ChatGPT 没法判断哪边是当前分支,哪边是待合并的分支,给出的建议就容易偏。
粘贴的时候加一句明确指令:“这是 Git 合并冲突文件,请分析 HEAD 和 feature-login 两个版本的差异,指出关键逻辑分歧点,并给出安全的合并建议。”这样一来,它就清楚你要的是分析,而不是简单地替你删掉标记。
让ChatGPT帮你定位风险点和决策依据
ChatGPT 通常会很快给出分析结果:比如“HEAD 版本保留了旧的日期格式化逻辑,而 feature-login 引入了国际化 i18n 参数;两者都修改了 formatDate 函数第 12 行的参数列表”——这种定位比你逐行盯十分钟屏幕要准得多。
如果它建议“优先保留 feature-login 的 i18n 支持,但需要补回 HEAD 中对 null 输入的兜底判断”,你就立刻知道该删哪行、该留哪行、该加哪句 if (!date) return ''。这步操作直接省掉了反复切分支、比对 commit diff 的繁琐流程。
用ChatGPT生成可直接粘贴的干净代码
确认建议合理之后,再发一条消息:“请输出最终合并后的完整 src/utils/date.js 文件内容,要求:① 删除全部冲突标记行;② 整合后的函数语法合法、无重复定义;③ 保留 HEAD 的空值防护 + feature-login 的 i18n 参数;④ 不添加任何注释或说明。” 这样返回的内容可以直接全选粘贴,覆盖掉原文件。操作起来很直接:把 ChatGPT 输出框里的代码拖进编辑器就行。
验证并完成 Git 提交流程
文件替换完成之后,还需要几步来收尾:
第一步,在终端执行 git add src/utils/date.js,告诉 Git “这个冲突我搞定了”。
第二步,运行 git status,确认该文件已经从 Unmerged paths 移入 Changes to be committed。
第三步,执行 git commit,Git 会自动弹出编辑器,保持默认的提交信息直接保存退出。
第四步,这一步不能省略:运行 git log --oneline --graph,确认最新提交节点有两个父提交(形如 * 3a1b2c Merge branch 'feature-login' into main),这才是真正的合并完成态。
