在处理合并时,我无法在Visual Studio中使GFS正常工作。基本上,当我拉出代码的最后一个版本时发生的每个合并操作都是一场噩梦。
我特别谈到发生的合并从同一个分支中拉出某人的其他代码(即我 谈话关于涉及多个分支的场景。)
我还特别谈到 Visual Studio的内置GIT插件,因此请不要建议执行我所知道的命令行命令(例如rebase)如果IDE中有另一个解决方案("你可以'#34; 将是一个有效的答案)。
以下是如何重现此问题:
现在问题在于:所有文件F1,F2和F3都处于修改状态,为什么?开发人员B只修改了文件F1和F3。 我没有看到F2进入修改状态的正当理由,因为B没有修改它。
我理解本地 F2文件与拉动之前不一样,但问题是B在推动之前基本上无法检查他对F1和F3的更改,因为每个人其他人的工作(在上面的简化案例中,在F2上)也出现在他的变更清单中。
在我们的真实场景中,有多个开发人员在同一个分支上工作,并且每个合并都是分支历史记录中的主要故障:Visual Studio基本上显示了一堆50个左右每个合并的修改过的文件(当开发人员只修改了1或2个文件时)。
此问题始终与最新的Visual Studio 2013一起发生.Visual Studio 2015似乎足够聪明,不将F2显示为已修改,但不是总是
如何解决此问题?目前,GIT是一个在Visual Studio中使用的PITA。
编辑:
这是一个直观的例子。在左侧,VS 2013中显示的历史记录:大量修改过的文件。在右边,VS 2015中显示的历史相同(相同的存储库,相同的机器,相同的提交......等)。显然VS 2015显示了不同的东西,稍微好一点(我只看到我的更改)。请注意,这并不总是以这种方式工作,有时候VS 2015会显示我没有修改的文件,就像VS 2013一样。
这个问题是关于我要推送合并的结果时的这种行为,但当我只是查看旧合并的历史时它完全相同,如下图所示:
问题是:
答案 0 :(得分:2)
你只需要了解git是如何工作的。
当你说:
开发人员B执行拉动:Visual Studio检测到文件F1上的冲突(预期)
那你错了。 Git检测到冲突,因此无法执行合并。 (即使你是从"相同的"分支合并,git正在做的是创建一个合并提交到磁带这些也分支在一起)。
当发生这种情况时,git会向您显示两个分支带来的所有差异。您可以 git add (或者在visual studio中调用的任何内容)所有文件没有冲突,它们将成为" merge commit"的一部分。
您唯一需要做的就是修复标记它们的冲突,然后按原样保留其余部分并创建合并提交。
总结,当合并失败时,您会看到更改和冲突。只需专注于修复冲突,让常规的更改就像它们一样。
答案 1 :(得分:0)
我使用Visual Studio 2013与Git&它适用于您上面提到的场景。
我的建议是检查这些开发者的用户设置是否存在差异。行结尾,制表符空间或使用Ctrl + K + F(格式化快捷方式)中的任何更改都可能出现问题。
我建议卸载除自然VS支持之外的任何自定义插件,工具,将Visual Studio更新到最新补丁。
如果问题仍然存在,请尝试在Visual Studio中的所有开发人员中导入相同的用户设置。请参阅:How to: Share Settings Between Computers or Visual Studio Versions
工具=>进口和导出设置.. =>
导出此设置&导入到所有其他用户,以便所有用户具有相同的设置。
git扩展,togise git或任何其他自定义git扩展等不同的插件可以使用行结尾或默认的制表符空格,导致任何开发人员几乎在所有已更改的文件中都检测到更改。