git合并冲突时需手动处理标记并理解语义,用git status -s定位uu文件,编辑后必须git add标记解决,慎用--ours/--theirs,核心是人工核对业务逻辑一致性。

git merge 出现冲突时,终端会明确提示哪些文件有冲突
Git 不会自动覆盖你的修改,而是在冲突文件里插入特殊标记,让你手动决定保留哪部分。关键不是“怎么删标记”,而是理解标记结构和上下文语义。
表示你当前分支(比如 <code>main)的修改-
=======是分隔线 -
>>>>>> feature/login是要合并进来的分支的修改(分支名在>后面) - 冲突块可能包含多行,也可能嵌套在函数或配置段中,别只看开头结尾
用 git status -s 快速定位所有冲突文件
比翻终端日志更可靠。执行后,冲突文件状态显示为 UU(Unmerged, both modified),比如:
UU src/utils/api.js UU package.json
这些就是你必须手动编辑的文件。注意:package.json 这类结构化文件一旦冲突,光靠删标记可能破坏 JSON 格式,建议配合 npm install 或 yarn install 验证依赖是否合法。
批量替换指定目录下所有 Git 仓库的远程地址(remote URL)。 当用户需要将 Git 仓库从一个服务器迁移到另一个服务器时使用。 触发词:git remote 替换、git url 批量修改、git 仓库迁移、更换 git 地址、批量修改 remote url。
解决完一个文件后,必须用 git add file 标记为已解决
这是最容易漏的步骤——改完代码不 git add,Git 依然认为冲突存在,git commit 会被拒绝。不要用 git commit -a,它会跳过未跟踪文件,但对冲突文件无效。
- 逐个添加:
git add src/utils/api.js - 批量添加所有已解决的冲突文件:
git add .(确保当前目录下没有意外暂存的脏文件) - 确认全部解决:
git status应该不再显示UU,而是提示 “all conflicts fixed” 或直接进入提交准备状态
用 git checkout --ours / --theirs 快速取舍(慎用)
适用于你明确知道该保留哪边逻辑的场景,比如:你本地改了日志级别,对方改了接口地址,且你确定要放弃自己的日志改动。
-
git checkout --ours src/config.js:保留当前分支(HEAD)版本,丢弃对方修改 -
git checkout --theirs src/config.js:保留要合并进来的分支版本,丢弃当前修改 - 执行后仍需
git add src/config.js,否则 Git 不认为冲突已解 - ⚠️ 对二进制文件(如图片、.zip)或复杂逻辑文件,
--ours/--theirs是唯一可行方式;但对源码,盲目使用可能引入隐藏 bug










