【问题标题】:Resolve a VS2017 GIT merge conflict解决一个 VS2017 GIT 合并冲突
【发布时间】:2018-04-19 03:42:55
【问题描述】:
试图让 GIT 工作流正常工作,但很难使用 VS2017 (v15.4.2) GIT UI。
这些是我的步骤:
- 创建一个名为 Test 的新 WinForms 项目并创建一个本地
它的存储库。
- 从名为
功能1
- 从名为 feature2 的主分支创建一个分支
- 激活 feature1 分支添加一个名为 Class1 的类并添加一个方法
将其命名为 Feature1
- 提交更改
- 激活 feature2 分支,添加一个名为 Class1 的类并向其添加一个名为 Feature2 的方法
- 提交更改
- 将 feature2 分支合并到 master 分支(master 分支
现在有 Class1 和方法 Feature2)
- 将 feature1 分支合并到 master 上。
这会造成合并冲突。但是,如果不创建无效的 Class1 文件,则无法解决合并冲突。似乎不可能只将 Feature1 方法添加到现有的 Class1 文件中,因为它还会向其中插入 using 语句和类定义。
如何只将添加的 Feature2 方法添加到现有的 Class1 中?
我在这里遗漏了什么明显的东西吗?
感谢您的宝贵时间。
【问题讨论】:
标签:
git
merge
visual-studio-2017
conflict
resolve
【解决方案1】:
很遗憾,目前在 Visual Studio 中解析 merge conflicts 并不是一个理想的体验。这两个副本根据它们的提交和它们对应的哈希值进行比较。鉴于两个文件可能看起来相同并且仍然可能源自具有不同哈希的两个不同提交,Visual Studio 发现很难解决此类提交。在这种情况下,您有两种选择:
- 手动复制
Feature2方法并将其添加到feature1分支的工作副本中,然后尝试将此分支合并到master。您将再次遇到merge conflict,但Visual Studio 为您提供take source 或take target 的选项。在这种情况下,您可以 take source 对应于您的 feature1 分支,因为您知道该分支具有所有必需的更改,并且您可以忽略 master 必须提供的冲突。
- 安装Tortoise Git。你也可以选择任何其他有信誉的 git 客户端。此类客户端将检测到相同的更改并自动解析
merge-conflicts,您在这里遇到的就是这种情况。
【解决方案2】:
您可以在 Visual Studio 中“合并”冲突文件,并在完成合并之前编辑合并后的版本。在解决冲突页面上,您应该能够选择冲突并将其合并。解决冲突后,您可以接受结果(必要时编辑已解决的内容)。
您应该会看到类似于以下内容的 UI:
这是否允许您按预期(并成功)解决冲突?