【问题标题】:Ignore certain changes for git commit忽略 git commit 的某些更改
【发布时间】:2013-04-17 17:41:35
【问题描述】:

我们团队的成员使用不同版本的 Visual Studio,VS 似乎会自动更新 sln 文件,代码如下:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual C# Express 2010

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012

每当我们使用解决方案时。我们可以将 git 配置为忽略此类更改吗?我们对这一行不感兴趣,但我们对 .sln 文件的其他更改感兴趣,例如将新的 csproj 添加到解决方案中。

【问题讨论】:

    标签: .net visual-studio git version-control gitignore


    【解决方案1】:

    无法部分忽略文件。一个简单的解决方案是创建 .sln 文件的两个版本,并告诉团队打开与他们的版本相对应的一个。

    另一种解决方案是提交后挂钩,如果这些行被更改,它会拒绝提交。需要一些脚本,但这是可行的。

    【讨论】:

      【解决方案2】:

      在本地,您可以简单地更新 git index 以忽略某些文件中的更改,如下所示:

      git update-index --assume-unchanged SolutionFile.sln
      

      您的任何开发人员都可以做同样的事情。 如果您不想将其置于源代码管理之下,另一种解决方案是将文件添加到 .gitignore

      【讨论】:

        【解决方案3】:

        我会忽略 .sln 文件,因为它们与构建项目无关:Microsoft 前段时间意识到项目文件必须是可版本控制的,并且 novadays Studio 完成的所有构建都是由 msbuild 引擎执行的获取那些.proj(和其他.<whatever>proj,如.csproj.vbproj 等)XML 文件并使用它们来构建项目。这些文件实际上就是构建项目所需的一切,而解决方案文件只是包含各种簿记信息。

        【讨论】:

          【解决方案4】:

          您可以向 git 添加一个涂抹/清洁过滤器,该过滤器会调用脚本来调整特定行以在提交时保持一致。在“Can git automatically switch between spaces and tabs?”中,它展示了如何实现类似的更改,其中空格在结帐时转换为制表符,并在提交时返回空格。

          您可能需要编写脚本来识别和修改相关行,而链接的示例使用预先存在的 unix 命令在制表符和空格之间交换。

          【讨论】:

            猜你喜欢
            • 2011-08-06
            • 2020-05-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-22
            • 1970-01-01
            • 2017-02-08
            相关资源
            最近更新 更多