本文将简单介绍因合并分支所产生的冲突,以及冲突的解决方法
首先创建并切换到新分支dev
并在file文件的最后添加一行:
this is edited by dev branch.
将修改提交到仓库
$ git add .
$ git commit -m '作者dev修改了file文件'
[dev 5fe7b14] 作者dev修改了file文件
1 file changed, 1 insertion(+)
现在切换到主分支master
并修改file文件的最后一行为:
this is edited by master branch.
并将修改提交到仓库
$ git add .
$ git commit -m '作者master修改了file文件'
[master e5c70e0] 作者master修改了file文件
1 file changed, 1 insertion(+)
现在,通过查看分支可以看到:两个分支上分别有新的提交
$ git branch -v
dev 5fe7b14 作者dev修改了file文件
* master e5c70e0 作者master修改了file文件
这种情况下,Git无法执行“快速合并”,
只能试图把各自的修改合并起来,但这种合并就可能会有冲突,
我们试试将dev分支合并到master分支上:
$ git merge dev
Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
此时git告诉我们,file文件中存在冲突,
必须手动解决冲突后才能提交 (此时就进入了'MERGING'状态)
此时我们应该打开冲突文件file,查看状况
在上面的图片中我们可以看到
git已经将冲突产生的内容用<<< === >>>标记起来
此时我们应该与另一个分支上的工作者进行沟通交流
修改文件内容、删除多余符号后 再提交文件到仓库
$ git add .
$ git commit -m '修复了file文件中的冲突'
[master f0cc575] 修复了file文件中的冲突
此时,我们成功解决了冲突
可以通过带参数的git log来查看分支的合并情况
$ git log --graph --pretty=oneline --abbrev-commit
* f0cc575 (HEAD -> master) 修复了file文件中的冲突
|
| * 5fe7b14 (dev) 作者dev修改了file文件
* | e5c70e0 作者master修改了file文件
|/
* 4c25416 提交了file文件
最后删除dev分支
$ git branch -d dev
Deleted branch dev (was 5fe7b14).