git下的Resource.Designer.cs

时间:2014-03-24 20:30:09

标签: git visual-studio xamarin xamarin-studio

我在一个人们使用两个不同的IDE(Visual Studio和Xamarin Studio)来处理相同代码的环境中工作。不幸的是,它们生成的文件Resource.Designer.cs略有不同。这是一个自动生成的文件,但我们确实在VC中需要它,或者当您尝试在克隆后构建它时,项目会抱怨。

这里的问题是我们确实需要在vc中使用这个文件,但是微小的变化非常烦人。如果您使用一个IDE提交项目,然后有人将项目下载到另一个IDE并重建,您会看到对该文件的更改。然后,如果您尝试切换分支,Git可能会因为合并冲突而拒绝。同样,如果您尝试合并两个分支,则几乎可以保证在该文件的标题中看到合并冲突。

如果两个人使用相同的IDE构建,但运行时版本稍有不同,则会出现同样的问题。我现在正在看一个例子,在Git中显示以下更改:

-  // Runtime Version: 4.0.30319.18444
+  // Runtime Version: 4.0.30319.34011

解决问题的一个解决方案是仅限此文件,让Git始终选择" local"评论的版本,并忽略对评论的所有更改。但我不知道是否有办法做到这一点。如果没有,是否有另一种方法可以避免对此文件进行少量更改而持续麻烦?

2 个答案:

答案 0 :(得分:6)

我们的开发团队通过将Resource.Designer.cs提交给我们的Git回购来解决这个问题。之后,每个开发人员都可以运行git update-index --assume-unchanged Resource.Designer.cs以使Git忽略对该文件的更新。

更新索引后,对Resource.Designer文件所做的更改不会出现在"未提交的更改和#34;执行git status时的部分。

如果需要提交该文件,只需执行git update-index --no-assume-unchanged Resource.Designer.cs,Git将再次开始跟踪对该文件的更改。

答案 1 :(得分:2)

有几种方法可以在git中解决这个问题。见:https://gist.github.com/canton7/1423106。该链接处理配置文件,但您可以根据需要将其应用于您的情况。

我认为最简单的解决方法是将文件提交为Resource.Designer.cs.in,然后在克隆后手动将其复制到Resource.Designer.cs。同时将Resource.Designer.cs添加到您的.gitignore文件中。