【问题标题】:Merge conflicts with project.pbxproj on Git - Xcode iOS与 Git 上的 project.pbxproj 合并冲突 - Xcode iOS
【发布时间】:2015-10-11 01:24:50
【问题描述】:

虽然我已经在这里阅读过类似的 cmets,但在这个论坛中,我还没有找到一种可能适合无缝团队合作的方法。

如果你明白我的意思,你可能已经发现在 Xcode 中使用 git 和 project.pbxproj 文件很棘手,即使你正在处理不同的文件。

说,

  • 开发人员:创建 Foo 文件夹,将 foo.swift 添加到项目中。
  • B 开发者:创建 Bar 文件夹,将 bar.swift 添加到项目中。

不同的路径...但你知道,冲突!您可能还注意到,将project.pbxproj 排除在外不是一种选择。

所以我的问题是:您如何以专业的方式处理这个问题,Git flow 就绪且最简单。

非常感谢大家。

PS:如果重要的话,我目前正在使用 Bitbucket 和 SourceTree。

PS2:如果可能,我想避免使用命令行和手动编辑文件。

【问题讨论】:

  • 为什么project.pbxproj 很特别?任何文件都可能发生冲突。
  • pbxproj 文件的问题在于,虽然它是一个文本文件,但它的结构是一团糟,解决其中的合并冲突可能会非常痛苦。例如,有问题的合并可能会在一个难以理解的文件中引发 1k 冲突(到处都是 uuid 作为引用等)。

标签: ios xcode git git-merge atlassian-sourcetree


【解决方案1】:

创建一个.gitattributes 文件并添加以下行:

*.pbxproj merge=union

合并将自动发生,无需您进行任何操作。

或者,您可以尝试mergepbx,它会进行更智能的合并。

【讨论】:

  • 试过了...这不是防弹的。我有一个案例,xcode 项目不再打开。需要手动合并。
  • @Primoz990 这会发生,因为有时合并两者(联合)最终会丢失一些逗号等。然后您需要手动修复它。所以手工做有时会更好。
【解决方案2】:
  1. 新文件仅由“main-develop”分支上的一位开发人员创建。
  2. 将新文件推送到“main-develop”
  3. 这些文件是其他开发者拉取后实现的

【讨论】:

    【解决方案3】:

    我是Kintsugi 的主要作者,该工具可以智能地合并冲突并承诺自动解决project.pbxproj 文件中发生的99.9% 的冲突。

    自述文件还包含有关如何将其设置为 Git 合并驱动程序的说明,因此当*.pbxproj 文件发生冲突时,它将自动应用。我不知道如何从 Sourcetree 执行此操作,但对于设置后的大多数冲突,您不必再次触摸命令行。

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 2019-05-12
      • 2011-01-01
      • 1970-01-01
      • 2016-09-21
      • 2012-10-06
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多