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

如何让Visual Studio在git下显示合并冲突?,git,visual-studio,visual-studio-2015,Git,Visual Studio,Visual Studio 2015,我使用的是Visual Studio 2015 Pro,正在使用Git回购。假设我做了一个拉取或应用了隐藏的更改,或者做了一些导致分支发生冲突的事情。例如,在本例中,我只应用了一个隐藏: 如您所见,我做了很多更改,但Web.config存在冲突。为什么XML文件总是有冲突 现在,我进入Visual Studio,进入团队资源管理器->更改: 在这里,我看到了我的阶段性更改,但没有任何未阶段性更改。我想知道为什么Web.config没有显示在这里,这样我就可以解决冲突了 两件事: 我相信如果我

我使用的是Visual Studio 2015 Pro,正在使用Git回购。假设我做了一个拉取或应用了隐藏的更改,或者做了一些导致分支发生冲突的事情。例如,在本例中,我只应用了一个隐藏:

如您所见,我做了很多更改,但Web.config存在冲突。为什么XML文件总是有冲突

现在,我进入Visual Studio,进入团队资源管理器->更改:

在这里,我看到了我的阶段性更改,但没有任何未阶段性更改。我想知道为什么Web.config没有显示在这里,这样我就可以解决冲突了

两件事:

  • 我相信如果我使用VisualStudio进行拉取,它将检测到冲突,然后运行合并工具。我还没有尝试过这个,但我知道它对TFS是有效的。但是,我想知道是否可以从命令行使用git pull,然后使用visualstudio解决冲突
  • git config--global merge.tool
    已经是
    vsdiffmerge
    ,因此如果我从命令行运行
    git mergetool
    ,它将使用Visual Studio进行合并。然而,这样做会产生一个全新的VisualStudio实例,它既慢又烦人,而且不允许我在项目其余部分的上下文中工作

  • 有人对此有什么见解吗?谢谢

    在Visual Studio Professional 2017 15.7.4中,“更改”窗口似乎显示了冲突

    设置:

    /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>
    
    /mnt/c/git/ConsoleApp1>git状态
    论分行行长
    要提交的更改:
    (使用“git重置磁头…”取消分级)
    修改:ConsoleApp1/Class1.cs
    修改:ConsoleApp1/Program.cs
    /mnt/c/git/CONSOLEAP1>git隐藏应用
    自动合并控制台EAPP1/Program.cs
    冲突(内容):合并ConsoleApp1/Program.cs中的冲突
    /mnt/c/git/CONSOLEAP1>git状态
    论分行行长
    要提交的更改:
    (使用“git重置磁头…”取消分级)
    修改:ConsoleApp1/Class1.cs
    未合并路径:
    (使用“git重置磁头…”取消分级)
    (使用“git add…”标记分辨率)
    两者都已修改:ConsoleApp1/Program.cs
    /mnt/c/git/CONSOLEAP1>
    
    颜色:


    您是否找到了解决问题的方法?我发现VS有时会意识到存在冲突,有时不会——似乎没有任何一致性,所以我没有找出任何原因。我没有。我现在只使用命令行处理所有事情。我相信VS2017具有更好的Git集成,但不幸的是,我们没有升级的预算。@MikeChristensen请记住,真正的,只有一个Git在命令行中。GUI试图通过在后台隐藏大量内容来对您友好;但从长远来看,它们弊大于利。或者使用一个好的GUI(例如Sourcetree)来解决repo中更复杂的问题……使用不同的编辑器对您有用吗?您可以尝试使用VS代码。它会自动与文件同步,并显示冲突。我意识到这并不是对你问题的回答,但对某些人来说,这可能是解决这个问题的办法。