解决VS2017 GIT合并冲突

时间:2017-11-06 21:25:34

标签: git merge visual-studio-2017 conflict resolve

尝试使用GIT工作流程,但很难使用VS2017(v15.4.2)GIT用户界面。

这些是我的步骤:

  • 创建一个名为Test的新WinForms项目并创建一个本地项目 它的存储库。
  • 从名为的主分支创建分支 feature1
  • 从名为feature2的主分支创建分支
  • 激活feature1分支添加名为Class1的类并添加方法 将Feature1命名为
  • 提交更改
  • 激活feature2分支,添加一个名为Class1的类,并向其添加名为Feature2的方法
  • 提交更改
  • 将feature2分支合并到主分支(主分支) 现在有Class1和方法Feature2)
  • 将feature1分支合并到主服务器上。

这将产生合并冲突。但是,如果不创建无效的Class1文件,则无法解决合并冲突。似乎不可能只将Feature1方法添加到现有的Class1文件中,因为它还会将using语句和类定义插入其中。

如何仅将添加的Feature2方法添加到现有Class1? 我错过了一些明显的东西吗?

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

你可以"合并" Visual Studio中的冲突文件,并在完成合并之前编辑合并的版本。在Resolve Conflicts页面上,您应该能够选择冲突并将其合并。完成冲突后,您可以接受结果(如有必要,可以编辑已解析的内容)。

您应该会看到类似于以下内容的用户界面: Merge conflicting file

这是否允许您按预期(并成功)解决冲突?

答案 1 :(得分:0)

不幸的是,在Visual Studio中解析merge conflicts并不是一个理想的体验。这两份副本根据其提交和相应的哈希值进行比较。鉴于两个文件可能看起来相同但仍然可能来自两个具有不同哈希值的不同提交,Visual Studio发现很难解决此类提交。在这种情况下,您有两种选择:

  1. 手动复制Feature2方法并将其添加到feature1分支中的工作副本,然后尝试将此分支合并到master。您将再次面对merge conflict,但Visual Studio会为您提供take sourcetake target的选项。在这种情况下,您可以take source对应于您的feature1分支,因为您知道此分支具有所有必需的更改,并且您可以忽略master具有的冲突提供。
  2. 安装Tortoise Git。您也可以选择任何其他有信誉的git客户端。此类客户端将检测相同的更改并自动解决您在此处遇到的merge-conflicts类型。