GIT 合并的冲突解决途径
2017-09-10 本文已影响27人
Leon_Geo
大多数情况下,合并的命令为:
git merge <commit>
commit:提交ID或代表他的引用(分支,标签,哈希值等)。
合并操作将<commit>对应的目录树和当前工作区目录树的内容进行合并,并生成一个新的提交,并以当前分支的提交作为第一父提交,<commit>作为第二父提交。同时该操作支持对多个<commit>和当前提交进行合并。
默认,合并成功后会自动对暂存区进行提交但也可以通过加入选项[--no-commit]使合并后的结果不自动提交,用户可以git ls-files 查看暂存区里合并后的结果,再手动提交。
当然,合并并非总是成功的。当要合并的两个提交对同一文件的同一区域同时进行了更改的话,提交就会失败。
我们可以通过查看暂存区git ls-files ,发现会有3个冲突文件,并分别标注有数字1、2、3。1代表冲突文件的原始版本,可用
$ git show :1:filename 查看内容;
2代表冲突文件的本地分支版本,可用
$ git show :2:filename 查看内容;
3代表冲突文件的被合并分支的版本,可用
$ git show :3:filename 查看内容;
我们有两种方法解决冲突:
1.手动编辑冲突文件。
step 1: 在工作区手动编辑冲突文件。打开文件后会发现git 已经通过
<<<<<<< HEAD
本地分支内容
=======
外地分支内容
>>>>>>> 哈希值
标注了文件中发生冲突的地方,你只要选择一个内容或改变他们,按你所想编辑完文件就好。
step 2: git add filename
step 3: git commit
2.通过git mergetool 命令图形化编辑以解决了冲突后再进行合并。