7

当您与多个开发人员一起处理 VS C# 项目时,所有开发人员都将新项目和文件添加到同一个解决方案中,最后一个尝试检查他的更改的人会在项目解决方案文件上遇到冲突,这些冲突不容易合并。

我发现这个问题的最简单的解决方案是忽略我自己的更改并接受服务器的最新版本。然后我重新整合我自己的变化。根据添加到项目中的新文件的数量,这可能很容易,也可能是非常烦人的任务。

我想知道是否有更简单的方法可以做到这一点。阅读:我可以让 VS/TFS/merge 为我做这件事吗?

4

5 回答 5

19

我的建议是更频繁地更新和提交。特别是,确保在等待解决方案文件的任何更改之前运行“获取最新”。

诸如 XML 和文本文件(所有项目和解决方案文件都是)之类的“合并地狱”通常只发生在人们试图提交非常大的单个更改时。

如果您养成定期提交的习惯,合并往往会更小,并且工具往往会做得很完美。

于 2010-03-16T16:52:00.247 回答
6

我制作了一个专门用于比较/合并解决方案文件的工具(也可用于动态创建过滤解决方案)。

可在以下网址找到:http ://slntools.codeplex.com/

于 2010-09-02T17:27:53.827 回答
1

我也非常厌倦项目文件的合并问题。(有一次我试图在一个项目文件中解决 9000 多个冲突。)

所以我做了一些事情: http: //www.projectmerge.com

虽然它最初是作为一个项目文件比较/合并工具,但它很快演变成可以比较和合并任何 XML 文件的工具。

希望你觉得它有用。

于 2010-08-14T15:03:03.077 回答
1

我从不向解决方案添加文件,只向项目添加文件。如果您需要添加文件,请将它们添加到项目中。

如果您不想合并,那么另一种选择是,如果有人签入带有新项目的解决方案,然后将该项目和解决方案拉下来,覆盖您自己的解决方案文件,然后将您的项目重新添加到解决方案并检查回来了。现在解决方案既有他们的项目也有你的。

于 2010-03-16T16:54:16.187 回答
0

添加到评论池中的一项建议...

尽量减少提交时对 SLN 文件所做的更改,以便其他人更容易合并。

(当然,其他人也是如此)。

为了说明,假设您的 SLN 文件当前列出了四个项目:

SLN: A, B, C, D

你和同事都做出改变。您添加项目 E,加上(出于某种原因)事情被重新排序:

Yours:  A, E, D, C, B

您的同事更改涉及添加项目 F:

Co-Worker: A, B, C, D, F

如果您按原样提交更改,那么您的同事必须面对合并这两个:

SLN: A, E, D, C, B
Co-Worker: A, B, C, D, F

讨厌。

相反,如果您(小心!)努力将您的差异最小化,您可以使您的工作副本看起来像这样:

Yours:  A, B, C, D, E

在这种情况下,当您的同事需要合并时,他们将不得不面对:

SLN: A, B, C, D, E
Co-Worker: A, B, C, D, F

更容易合并。

于 2010-03-17T21:01:02.620 回答