git 冲突解决
在使用 Git 时,如果你在合并分支(如 git merge
或 git pull
)时两个分支修改了同一文件的相同位置,就会发生 冲突(conflict)。Git 无法自动决定保留哪部分内容,就需要你手动解决。
下面是解决 Git 冲突的 详细步骤:
🔥 一、冲突的表现
执行 git merge
或 git pull
时会出现如下提示:
Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
查看冲突文件:
git status
显示类似:
both modified: file.txt
打开 file.txt
文件会看到冲突标记:
<<<<<<< HEAD
这是当前分支的内容
=======
这是要合并进来的分支内容
>>>>>>> branch-name
✅ 二、解决冲突的方式
方式 1:手动编辑文件
-
打开冲突文件(如
file.txt
) -
手动决定保留哪一部分内容,或进行合并调整
-
删除所有
<<<<<<<
,=======
,>>>>>>>
标记 -
保存文件
方式 2:使用 VS Code 或其他图形化工具
如果你安装了 VS Code,VS Code 会高亮显示冲突部分,并提供按钮如“接受当前更改”“接受传入更改”“接受两个更改”。
其他图形化工具如:
-
GitKraken
-
Sourcetree
-
GitHub Desktop
-
IntelliJ / WebStorm / PyCharm 等
✅ 三、标记为已解决并提交
当你解决完所有冲突并保存文件后,继续以下步骤:
git add file.txt # 标记文件已解决
git commit # 完成合并并提交(Git 会生成默认的 merge commit message)
如果你是在执行 git rebase
,解决冲突后要用:
git add file.txt
git rebase --continue
🔄 四、放弃合并(如果不想继续)
git merge --abort # 放弃本次 merge
git rebase --abort # 如果是在 rebase 中冲突
🔍 五、查看冲突前后的版本差异(可选)
git diff # 查看当前冲突内容
git log --merge # 查看有冲突的提交记录
git checkout --theirs file # 使用远程(合并进来的)版本
git checkout --ours file # 使用当前分支的版本