【问题标题】:How to deal with .csproj in git如何在 git 中处理 .csproj
【发布时间】:2017-08-14 14:46:04
【问题描述】:

我们正在使用 Visual Studio 2015 和 git 在同一个项目上工作几个人。这工作得相当好,期待.csproj 文件(项目文件)。每次向项目添加新文件时,.csproj 文件都会自动更改。因此,如果两个(或更多)人将文件添加到他们的本地版本,则需要与最后一个提交的人进行合并。

有没有办法避免这种情况?

编辑:我可以获取,但不能拉取或提交。如果我尝试拉取,Visual Studio Git 想要将远程 .csproj 文件与我的本地版本合并。但是,它不能自动执行此操作,并且我为帮助它所做的每一次尝试都会导致 .csproj 文件不起作用。

【问题讨论】:

    标签: git visual-studio visual-studio-2015


    【解决方案1】:

    Visual Studio 创建的.csproj 文件是 XML 数据。 Git 对 XML 一无所知。它尝试将这些合并为普通文本文件。结果很少是有效的 XML,更很少是类似函数的东西。

    默认情况下,当 Git 无法合并这些 XML 文件时,您通常会遇到 合并冲突:Git 将停止并让您修复混乱。由你来做这件事。 VS 是否提供任何工具来提供帮助,我不知道(我避免使用 Windows)。另请参阅this description of the problem(此链接也在链接问题的答案中,但我认为我应该将其作为直接链接包含在此处)。

    有人尝试用union merge来完全自动化合并这些XML文件,这样就没有Git冲突了。这不是一个好主意。详情请见VS 2013 C# and Git: .csproj files don't merge upon pulling

    【讨论】:

    • 感谢您的反馈。我无法避免使用 Windows/C#.NET,因为我不是决定工具的人。如果我找到合理的解决方案,我会发布答案。再次感谢您。
    • “(我避免使用 Windows)” - 让我咯咯笑??
    【解决方案2】:

    不需要。你试过这样的流程吗?有很多冲突吗?当几个人修改一个文件时,Git 中的合并冲突不会发生,而是当几个人修改同一行时。老实说,Git 不存储文件,而是存储内容。文件只是人类处理内容的常用方式。

    所以我的答案是尝试看看是否有任何问题,因为 Git 自动解析器非常聪明,并且您的问题可能不存在。

    【讨论】:

    • 所以基本上,我不是在每次提交之前进行拉取,而是提交并让 git 合并 .csproj 文件?
    • 没有。如果不获取远程更改,您将无法推送。我不是 .NET 开发人员,但我认为 .csproj 应该没有太多问题。你经常遇到他们吗?如果是,那么可能存在不同的问题。
    • 每次提交更改.csproj 时,我都无法进行提取/拉取(因为这会覆盖我自己修改的.csproj 文件。特别是在开发早期,有一个大量添加和重命名文件,这使得这种情况经常发生......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多