如何让Visual Studio在git下显示合并冲突?

14

我正在使用Visual Studio 2015 Pro,并与Git存储库一起工作。假设我执行了拉取操作或应用了暂存更改,或者做了一些导致我的分支发生冲突的操作。例如,在这种情况下,我刚刚应用了一个stash:

enter image description here

作为您的助手,我可以翻译如下内容:

正如您所看到的,我有一堆更改,但是 Web.config 有冲突。为什么总是 XML 文件有冲突呢?

现在,我进入 Visual Studio 并转到 Team Explorer->Changes

enter image description here

在这里,我看到了我的暂存更改,但是没有未暂存的更改。我想知道为什么 Web.config 没有出现在这里,以便我可以解决冲突。
两件事情:
1. 我认为如果我使用 Visual Studio 进行 Pull,它会检测到冲突,然后运行合并工具。我还没有尝试过,但我知道 TFS 就是这样工作的。不过,我想知道是否可以使用命令行 git pull,然后使用 Visual Studio 解决冲突。 2. git config --global merge.tool 已经是 vsdiffmerge,所以如果我从命令行运行 git mergetool,它将使用 Visual Studio 进行合并。不过,这样做会生成一个全新的 Visual Studio 实例,速度很慢,而且很烦人,也不能让我在项目的上下文中工作。
有人对此有什么见解吗?谢谢!

你已经解决了你的问题吗?我发现VS有时会识别到冲突,有时不会 - 没有任何一致性,所以我还没有找到任何原因。 - Theo
2
我并没有。现在我只使用命令行处理所有事情。我确实相信VS2017拥有更好的Git集成,但不幸的是我们没有升级的预算。 - Mike Christensen
@MikeChristensen 请记住,真正且唯一的Git在命令行中。GUI试图通过隐藏后台的许多内容来对您友好; 但从长远来看,它们会带来更多的伤害而不是好处。或者使用一个好的GUI(例如Sourcetree)来解决与存储库相关的更复杂的问题... - petrpulc
使用不同的编辑器是否适合您? 您可以尝试使用VS Code。 它会自动同步文件并显示冲突。 我意识到这不是对您问题的回答,但对于其他人来说,这可能是解决此问题的方法。 - snugghash
2个回答

3
在Visual Studio Professional 2017 15.7.4中,“更改”窗口似乎显示了冲突内容。如下图所示:enter image description here。安装设置如下:
/mnt/c/git/ConsoleApp1>git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   ConsoleApp1/Class1.cs
        modified:   ConsoleApp1/Program.cs

/mnt/c/git/ConsoleApp1>git stash apply
Auto-merging ConsoleApp1/Program.cs
CONFLICT (content): Merge conflict in ConsoleApp1/Program.cs
/mnt/c/git/ConsoleApp1>git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   ConsoleApp1/Class1.cs

Unmerged paths:
  (use "git reset HEAD <file>..." to unstage)
  (use "git add <file>..." to mark resolution)

        both modified:      ConsoleApp1/Program.cs

/mnt/c/git/ConsoleApp1>

带有颜色:

在此输入图片描述


这是一个展示带有颜色的图片的HTML代码。

2

遇到了类似的问题,而且在Visual Studio中出现了以下情况:

在''仓库中合并完成时发生冲突。解决冲突并提交结果。

我尝试了前一个答案中提到的方法,但是在Visual Studio Professional 2019版本16.8.4+中删除了Team Explorer。我也遇到了合并冲突不显示的问题,后来发现需要在Git Changes窗口中提交最新更改(不需要立即推送),然后尝试合并导致冲突的更改。此时未合并的更改将会出现。

简短总结:针对VS2019

  1. 提交更改
  2. 合并
  3. 未合并的更改将出现

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接