【问题标题】:How can I get Visual Studio to show merge conflicts under git?如何让 Visual Studio 在 git 下显示合并冲突?
【发布时间】:2017-01-09 23:25:32
【问题描述】:

我正在使用 Visual Studio 2015 Pro 并使用 Git 存储库。假设我进行了拉取或应用了隐藏的更改,或者做了一些导致我的分支发生冲突的事情。例如,在这种情况下,我只是应用了一个 stash:

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

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

在这里,我看到了分阶段的更改,但有 个未分阶段的更改。我想知道为什么 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 有时会认识到存在冲突,有时则不会 - 似乎没有任何一致性,所以我没有孤立任何原因。
  • 我没有。我现在只是使用命令行来处理所有事情。我确实相信 VS2017 有很多更好的 Git 集成,但不幸的是我们没有升级的预算。
  • @MikeChristensen 请记住,真正的且只有一个 Git 在命令行中。图形用户界面试图通过在后台隐藏很多东西来对你好。但从长远来看,它们弊大于利。或者使用良好的 GUI(例如 Sourcetree)来解决更复杂的回购问题...
  • 使用不同的编辑器对你有用吗?您可以尝试使用 VS Code。它会自动与文件同步,并显示冲突。我知道这不是您问题的答案,但它可能是某人解决此问题的方法。

标签: git visual-studio visual-studio-2015


【解决方案1】:

遇到类似问题并在 Visual Studio 中得到此问题

合并已完成,但 '' 存储库中存在冲突。解决 冲突并提交结果。

我尝试了与上一个答案相同的方法,但在 Visual Studio Professional 2019 版本 16.8.4+ 中删除了团队资源管理器。我遇到了与未显示的合并冲突相同的问题,发现您需要在 Git 更改窗口中提交最新更改(无需推送),然后 然后 尝试合并导致的更改冲突。此时出现了未合并的更改。

TL;VS2019 的 DR

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

【讨论】:

    【解决方案2】:

    在 Visual Studio Professional 2017 15.7.4 中,Changes 窗口似乎显示了冲突。

    设置:

    /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>
    

    有颜色:

    【讨论】:

      猜你喜欢
      • 2016-11-08
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多