代码之家  ›  专栏  ›  技术社区  ›  Michael Waterfall

二进制文件(特别是Xcode项目文件)的Git合并

  •  7
  • Michael Waterfall  · 技术社区  · 16 年前

    我在Git下有一个Xcode项目,在我的“master”分支下有一个“experimental”分支。两个分支自分支以来都出现了分歧(所以不能快速转发!)我正在将“实验”合并到我的“硕士”分支中。

    我已经设置了一个.gitattributes文件,将特定的Xcode文件(project.pbxproj)视为二进制文件,因为它应该被视为二进制文件。但是,我不确定如何合并它。我不确定那个特定的文件做了什么,但是如果它处理了哪些文件被添加到项目中,我就无法合并它们,因此我必须手动将某些文件添加回项目中(可能不记得所有文件)。其他人如何处理这种情况?

    另外,我已经读到您必须手动更新二进制文件(显然)或复制不同的版本。但是,一旦我进入合并过程,我工作副本中的文件就是“主”版本。如何访问“实验”版本?我不能检查它,因为它会破坏合并过程。

    谢谢你的时间!

    1 回复  |  直到 13 年前
        1
  •  9
  •   Community Mohan Dere    9 年前

    通常,对于二进制文件,我建议 copy-merge type of .gitattribute directive .
    也就是说,我只是复制来自合并远端的文件。

    为了 .pbxproj 但是,这可能不是一个好的选择,因为 described here .

    根据我所知,包装这些文件只会使问题变得更糟——因为您将完全无法合并更改。
    虽然在某些情况下可以合并项目文件,但这不是您应该做的事情 依靠自己的能力。基本建议是避免与其他人同时编辑项目文件。

    我喜欢版本控制项目文件(比如 ones for Eclipse ,只有当我知道它们是:

    • 不经常修改(当然不是由每个开发人员修改)
    • 仅使用相对路径
    • 一个工作站没有数据细节

    简而言之,如果这些文件不需要合并(或者只需要简单地合并),我希望它们在VCS中。在你的情况下,这可能不是那么有用,在说,风投在第一位。


    注:如中所述 Git manual :

    在合并过程中,索引包含每个文件的三个版本。这三个“文件阶段”中的每一个都代表文件的不同版本:

    $ git show :1:file.txt  # the file in a common ancestor of both branches
    $ git show :2:file.txt  # the version from HEAD.
    $ git show :3:file.txt  # the version from MERGE_HEAD