git处理分支冲突

首先假设我们有一个分支master,为了开发我们将在master分支的基础上创建新分支dev:"git branch dev"。

然后查看是否创建分支成功:"git branch", 将会显示我们创建的全部分支

git处理分支冲突

然后我们切换到dev分支开始工作:"git checkout dev"。到目前git的分支管理如下:

git处理分支冲突

假设源码中有一个main.cpp

我们在dev分支中修改了main.cpp,标记为maim.cpp_dev。

然后我们切换到master分支下:"git checkout master"(模拟工作中同事对master有新提交)

在master中我们编辑main.cpp, 标记为main.cpp_master。到目前git的分支管理如下:

git处理分支冲突

此处由于master向前推进了我们记为msater1,dev分支也向前推进了,我们记为dev1,

至此我们觉得自己的工作完成了,并且通过内部测试,想把工作内容合并到master分支上,我们先切换回master分支,然后执行:"git merge dev"。此时由于master分支已经变成了master1,dev1分支并不是其直接增量,所以合并时肯定会冲突,如下:

git处理分支冲突

提示我们在main.cpp文件中存在冲突,我们需要先解决冲突然后才能完成后续的合并工作,其实此时git的合并已经完成了,只是造成了冲突,git给我们生成了冲突文件(也就是此时的main.cpp文件,我们标记为main.cpp_conflict),我们需要手动解决main.cpp_conflict文件中的冲突(确定哪些行删除,哪些行保留),冲突文件处理完后我们需要重新添加该冲突文件到git版本控制中:"git add .",然后执行:"git commit -m" 冲突处理完成" "。如下:

git处理分支冲突

至此,我们的冲突彻底处理完成。