如何使用VisualStudio解决团队开发过程之中的commit冲突
当两个人同时修改同一份文档之中的同一处位置的时候,git程序将会无法自动为我们执行代码源文件的合并操作。例如,在编写GitHub 新手入门
这份文档的时候就出现了commit合并冲突:
可以很明显的了解到,在上面的commit合并的过程之中出现了一个合并冲突(Conflicts: 1),github客户端给了我们两个选择:
- Conflicts: 1: 解决这个合并过程之中的commit冲突
- Abort: 放弃合并操作
这里当然不是去选择Abort放弃操作,而是点击Conflicts: 1链接在VisualStudio之中进行代码合并冲突的解决操作。在这里我们点击Conflicts: 1进入下一步。
进入到Resolve Conflicts
页面之后,我们就可以更加清楚的了解到合并冲突的详细信息了,例如从上面我们可以非常清楚的了解到合并冲突来自于一份文件名为README.md
的文档。在这里,对于每一份提示有冲突的文档我们都有三个选项:
- Merge按钮,将会让我们进入VisualStudio的编辑器之中自己手动删减文档合并冲突
- Take Remote链接,VisualStudio将会使用远程服务器上面的最新版本覆盖掉当前的有冲突的文档
- Keep Local链接,VisualStudio将会使用本地的最新版本覆盖掉远程服务器上面的当前的有冲突的文档
如果冲突的位置的数量不是很多或者覆盖掉哪一个所带来的问题都不会很大,可以根据自己的需求选择Take Remote或者Keep Local之中的任意一个操作来自动解决当前的文档的冲突。假若这份有冲突的文档之中含有比较重要的记录或者算法,则必须要使用Merge按钮来自己手动编辑有冲突的文档来进行合并操作。这里我们点击Merge按钮:
在新出现的界面之中我们有三个文本框:
- 左上(Source): 当前文档在远程服务器上面的最新版本
- 右上(Target): 当前文档在本地上的最新版本
- 下部(Result): 冲突合并操作的最终的文档结果
在Source
和Target
这两个编辑框之中,含有勾选按钮部分带有浅绿色的背景部分的代码就是出现冲突的位置。例如在这里,Source部分有4个勾选按钮,说明有4个部分是冲突的,在Target部分有1个勾选按钮,说明有一处是含有冲突的。假若我们将勾选按钮选中的话,在下部的Result编辑框之中会出现相对应的文本,表示我们将勾选按钮部分的代码加入到了最终的合并结果之中。假若我们将勾选按钮取消选中的话,在下部的Result编辑框之中相对应的部分会消失,说明当前的冲突部分将会从最终的合并结果之中删除。
在这里我们将所有包含有冲突的部分都勾选上,然后点击左上的Accept Merge接受当前的冲突合并的结果,待会在文本编辑器之中自己删除掉多余的部分。当冲突合并完成之中就可以像普通的Changes一样进行commit然后sync同步了。