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

Mic*_*all 7 git xcode

我在git下有一个Xcode项目,而且我的"master"分支有一个"实验性"分支.自分支以来,两个分支都有分歧(所以没有快进!),我正在将"实验"合并到我的"主"分支中.

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

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

谢谢你的时间!

Von*_*onC 9

通常,对于二进制文件,我建议使用复制合并类型的.gitattribute指令.
也就是说,我只是复制来自合并远程端的文件.

.pbxproj但是对于文件,这可能不是一个好的选择,如此处所述.

据我所知,包装这些文件只会让问题变得更糟 - 因为你完全无法合并更改.
虽然您可以在某些情况下合并项目文件,但这并不是您应该依赖的事情.基本建议是避免与其他人同时编辑项目文件.

我喜欢版本化项目文件(比如Eclipse版本),只有我知道它们是:

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

简而言之,如果这些文件不是要合并的(或者只是很容易合并),我希望它们在VCS中.在您的情况下,首先将它们放入所述VCS中可能没那么有用.


注意:如Git手册中所述:

在合并期间,索引包含每个文件的三个版本.这三个"文件阶段"中的每一个代表文件的不同版本:

$ 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
Run Code Online (Sandbox Code Playgroud)

  • 另见http://stackoverflow.com/questions/101752/aborting-a-merge-in-git#107860 (2认同)