在VScode中使用git rebase手动处理冲突时选择后冲突标记仍然留在了代码里以及选择按钮消失

如标题所示,昨天在用VScode rebase一个commit像屎山一样的代码时,出现了几十个需要手动解决的conflict,连带着遇到了一堆bug。

  1. 第一个bug就是点开conflict文件的时候发现选择按钮没了,但是conflict marker还在,代码里就会显式的出现current和incoming的两种代码,而且无法用按一下的方式解决。

  1. 第二个bug就是在我有选择按钮的情况下,按了选择按钮(accept incoming or current)之后,conflict marker还是部分留下了,在rebase结束了之后仍然留下了======以及>>>>HEAD这样的标记在我的代码里。(最后只能reset到上个版本去,再重复rebase 屎山)

下面是这两个bug的解决方案

  1. 第一个bug在中文互联网上还可以搜到一些方案,就是在vscode的设置里关闭merge editor,但是对我无效,我就是关闭的,我解决的方式是打开右下角显示的solve in editor(不记得是不是叫这个名字,但是就是有一个蓝色的图标),点进去之后如果运气好的话可以在那里面解决所有的冲突,如果运气不好的话点进去右下角会提示你文件错误之类的error,这时候关闭这个对比的页面,回到原文件,会发现源文件中的处理conflict的选择按钮终于出现了。如果还是没出现,就多重复几次这个过程。

  1. 第二个bug中文互联网基本上搜不到,但是可以google到几个issue

https://github.com/microsoft/vscode/issues/137324

https://github.com/microsoft/vscode/issues/131067

虽然没有官方的回复,但是从评论中可以看到原因和解决方案,那就是从accept到git add xxx到git rebase continue这一套流程操作的太快了,后台还没有反应过来,没有accept完全成功,所以留下了====和>>>>HEAD这样的痕迹。因此我非常缓慢的处理conflict,每次accept后等待若干秒,最后终于成功的rebase并且没有留下conflict marker了。

你可能感兴趣的:(vscode,git)