Git 冲突通常发生在合并操作时,即当两个或更多的分支在同一个文件的相同部分进行了不同的修改时。解决冲突的过程需要人工干预,以确定最终版本应该包含哪些修改。以下是处理 Git 冲突的步骤和一些常用的命令:
处理 Git 冲突的步骤
-
尝试合并:
git merge <branch_name>
如果出现冲突,Git 会提示哪些文件存在冲突。
-
查看冲突文件:
Git 在冲突文件中会添加冲突标记,类似以下内容:<<<<<<< HEAD // 这是当前分支的内容 ======= // 这是待合并分支的内容 >>>>>>> <branch_name>
冲突标记
<<<<<<<
和=======
之间是当前分支的内容,=======
和>>>>>>>
之间是待合并分支的内容。 -
解决冲突:
手动编辑冲突文件,选择需要保留的内容,删除冲突标记。确保文件内容符合预期。 -
标记冲突文件为已解决:
git add <file>
添加解决了冲突的文件到暂存区,表示已解决冲突。
-
完成合并:
git commit
提交合并结果。如果已经提交过了,可以使用
--no-edit
选项来保留默认的合并信息:git commit --no-edit
查看冲突文件
-
查看所有冲突文件:
git status
Git 会列出所有存在冲突的文件,标记为
both modified
。 -
查看冲突详情:
git diff
显示当前工作区和暂存区之间的差异,包括冲突标记。
取消合并
如果在解决冲突过程中需要放弃当前的合并,可以取消合并操作:
- 放弃合并并恢复到合并前的状态:
这个命令会放弃当前的合并操作,恢复到合并前的状态。git merge --abort
实际示例
假设你在 main
分支上,并尝试合并 feature
分支:
-
尝试合并
feature
分支:git checkout main git merge feature
如果出现冲突,Git 会提示哪些文件存在冲突。
-
解决冲突:
打开提示存在冲突的文件,编辑冲突部分,选择需要保留的内容,删除冲突标记。 -
标记冲突文件为已解决:
git add <file>
-
完成合并:
git commit
通过这些步骤和命令,你可以有效地解决 Git 冲突,完成合并操作。