问题概述
在项目实施过程中,多人维护同一份文件或代码时经常会在本地Commit完再从远程仓库Pull时出现冲突。这时需要保留自己的内容,同时也保留远程仓库原来的数据信息。
场景重现
新建test仓库,仓库中新建文本文档,在其中输入内容123。
在PC上两个不同的地方分别克隆test仓库,以此来模拟两个不同的维护人员。 接下来模拟冲突产生过程:
- 在test1文件夹中的文档中新增内容“1111111”,右击->Commit,之后右击->TortoiseGit->Push;
- 在test2文件夹中的文档中新增内容“2222222”,右击->Commit,之后右击->TortoiseGit->Pull;
- 结果显示出现冲突。
当远程仓库和本地仓库的同一份文件的相同行内容出现差异时,Git会提示出现冲突。
在实际项目实施过程中比较常见的情况是:
- 你对已有的代码进行了改动,会造成冲突(应该以你修改的为准)
- 别的同事推送的代码.和你添加的代码的位置冲突了(都要保留)
解决冲突
解决冲突过程: 打开冲突项目所在位置,右击->TortoiseGit->Reslove,界面会显示冲突文件。 点击OK系统会自动合并冲突,并附加解决冲突细则。 下图即为合并后的文件内容,红框中的为提示信息,即远程仓库新增的和本地仓库原有的内容。 也可以双击冲突文件,打开解决冲突的窗口: 左边文件为:远程仓库的文件,右边为本地文件,下边的文件是你合并操作后的文件,所以你要对比左右文件的差异。 右击会展示解决冲突的不同方案,分别为:
- Use text block from left:使用左边(远程库)的代码
- Use text block from right:使用右边(本地)的代码
- Use text block from right before left:
远程库和本地文件的代码都保留,且本地库的代码放在上面,远程库的代码放在下面 - Use text block from left before right:
远程库和本地文件的代码都保留,且本地库的代码放在下面,远程库的代码放在上面
最后,点击Mark as resolved和Save按钮即可(如果冲突比较多,就点击Next difference一个个排查解决冲突即可) 最后,再将合并后的代码push到远程仓库
|