我在git下有一个Xcode项目,而且我的“master”分支有一个“实验性”分支。自分支以来,两个分支都有分歧(所以没有快进!),我正在将“实验”合并到我的“主”分支中。
我已经设置了一个.gitattributes文件来将特定的Xcode文件(project.pbxproj)视为二进制文件,因为它应该被视为二进制文件。但是,我不确定如何合并它。我不确定那个特定文件是做什么的,但是如果它处理了哪些文件被添加到项目中,我就无法合并它们,因此我必须手动将某些文件添加回项目(可能不是记得他们所有)。其他人如何处理这种情况?
另外,我已经读过你必须手动更新二进制文件(显然)或复制不同的版本。但是,一旦进入合并过程,我工作副本中的文件就是“主”版本。我如何访问“实验”版本?我无法检查它,因为它会破坏合并过程。
谢谢你的时间!
答案 0 :(得分:9)
一般情况下,对于二进制文件,我建议使用copy-merge type of .gitattribute
directive
也就是说,我只是复制来自合并远程端的文件。
对于.pbxproj
个文件,这可能不是一个好的选择,如described here。
包装这些文件只会让我的问题变得更糟 - 因为你完全无法合并更改。
虽然您可以在某些情况下合并项目文件,但这不是您应该做的事情 依靠能够做到。基本建议是避免与其他人同时编辑项目文件。
我喜欢版本化项目文件(例如ones for Eclipse),只有我知道它们是:
简而言之,如果不合并这些文件(或者只是简单地合并),我希望它们在VCS中。在您的情况下,首先将它们放入所述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