我正在开发Visual Studio 2012和2013年的另一位开发人员。当我们在git上共享代码时,每个Visual Studio版本都会根据自己的喜好更改.sln标头。几乎每次提交我们都会得到这样的变化:
@@ -1,8 +1,6 @@
<U+FEFF>
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.30110.0
-MinimumVisualStudioVersion = 10.0.40219.1
+# Visual Studio 2012
有没有办法避免这种情况,除了手动检查.sln的更改,只提交相关的提交?
请注意,将解决方案文件添加到.gitignore是一个坏主意,因为有效的更改并不常见。
答案 0 :(得分:1)
我要继续回答,只是总结一下我对这个主题的一些知识。在某种程度上,我认为这是一个未解决的问题。标准答案是不要将二进制文件和元数据检查到VCS&#34;,但有时现实是您需要共享一些IDE /编译配置信息,但您需要支持多个编译器/操作系统/版本/等
显然,.gitignore
对于真正依赖于用户或编译器生成的任何内容都很有用。你可以自己找出最容易忽略的最佳项目,或者你可以仔细阅读不同编译器和IDE的许多lists available online。
但是,某些文件是必需的,但仍取决于从用户到用户或机器之间的因素。根据我的经验,Visual Studio C项目的.vcxproj
文件一直是违法者。问题是VS2010和VS2012想要使用PlatformToolset
的不同版本。解决方案是使用条件语句:
<PlatformToolset Condition="'$(VisualStudioVersion)' == '10.0'">v100</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '11.0'">v110</PlatformToolset>
我不认为这个想法会在你的具体案例中起作用,但它可能会在很多方面起作用。对于你的情况,我认为你必须决定&#34;规范&#34;版本将是(即选择一个默认的编译器/ IDE /版本/机器/无论如何),然后任何偏离它的情况将需要避免检查冲突的部分。最简单的方法是在所有更改中使用git add -p
,或者仅对已知存在问题的文件使用git stash
。只添加对每个人都有用的部分,其余部分,如果它们妨碍了一些变形,你可以git checkout -- <filename>
或{{1}}之后使用{{1}}。我承诺了重要的部分。
这个问题(或至少非常类似的问题)也被提出here,但在撰写本文时,答案并不是很有帮助。 This也可能有一些相关的讨论,但同样,与您的问题相关的真正解决方案有些缺乏。