VSCode中的代码合并操作
前言:
VSCode是一个常用的编辑器(微软的东西,不用介绍了),Git是一个开源的版本管理工具(全球最大的github代码托管平台就基于git搭建,开源操作系统LInux采用git进行版本管理)。由于网上的有效资料相当少,就出一篇专栏
背景:
目前有一个git管理的仓库,仓库中有一个文件:shoppinglist.txt,文件内容为:
项目经历的历史,使用git log命令查看:
项目的历史如下:
正文
现在将berries分支合并到master分支:
显然,分支合并是会出现冲突的:
我们用VSCode打开项目所在文件夹

我们自然希望两个分支的内容都能保留下来,重复部分(watermelon)可以删除。这时有2种处理方案(注意这是两种不同的解决方案,请不要混合使用!):
手动解决
合并解析器中解决

手动解决
点击保留双方更改,删除watermelon,保存文件

好了,现在我们确定已经解决了冲突了。虽然,VSCode那个`在合并编辑器中解析`按钮还没有消失,并且它提示我们文件还处于有冲突的状态。。。请不要点击`在合并编辑器中解析`(UP主强烈建议,当然如果你感兴趣点击了会发生什么,可以试试),我们现在确实已经完成解决了冲突了。这时我们直接暂存文件:
可以看到VSCode那个`在合并编辑器中解析`按钮已经消失,并且文件处于暂存状态。我们成功解决了冲突,可以直接提交了。

合并解析器中解决
我们注意到VSCode那个`在合并编辑器中解析`按钮,还是很令人在意。这里我们尝试直接点击这个按钮。让我们先回到开始时的状态:
多提一下,git reset --hard e2dcb85 这个命令的 hash 值,是我们专栏 [背景] 中的一个命令
可以查看的。
重新合并分支
不出意料的出现冲突
这次我们点击一下`在合并编辑器中解析`按钮

啊这,突然多开了一个标签页,弹出三个窗口:传入,当前,结果
不慌,传入窗口显示它是berries分支的内容,当前窗口显示它是master分支的内容,而结果窗口显然是我们合并完成后的内容,结果窗口显示剩余1个冲突。
传入和当前窗口的高亮部分,出现了我们熟悉的几个选项:接受传入 | 接受组合 | 忽略
我们现在要合并,并不希望忽略,都选择接受

我们发现,合并编辑器已经帮我们完成合并了,这时我们可以直接点击完成合并。然后再提交分支。但是,等等,如果合并编辑器的结果,我们并不满意怎么办?我们尝试修改内容,将apricot移到berries的前面

编辑合并结果,合并编辑器依旧认为我们完成了合并。好了,可以放心的点击完成合并了。

合并完成,可以提交分支了。VSCode自动出现了一个提交按钮。我们当然可以直接点击按钮提交,也可以编译提交信息。但是,等等,我们先看看现在是什么状态
可以看到,我们处于已暂存,未提交状态
好了,我们并不喜欢VSCode的图形化界面,它很多时候非常的慢,而命令行总是有着出色的执行效率。我们可以提交代码了
看一下我们的操作成果
附录
参考链接:
https://code.visualstudio.com/docs/sourcecontrol/overview#_merge-conflicts