针对多开发人员项目的Xcode + Git的最佳实践

Luk*_*uke 16 git version-control xcode github bitbucket

我可以创建一个repo并使用Gi​​tHub/BitBucket来完成我自己的项目.我在与其他开发人员合作或尝试在GitHub上分叉项目时遇到了问题.

我知道其他答案,比如开源项目中git存储库的最佳实践,但是我想知道如何解决OSX/Xcode特定问题.

  1. .DS_Store文件可能很痛苦.您可以使用.gitignore来防止,但如果已经包含它们会发生什么,或者其他开发人员通过笨拙的git命令将它们添加回来?

  2. .xcodeproj将不得不更改目录名称和开发商型材其他人.什么是合并或避免冲突的最佳方式?

  3. 如果我从github项目中分叉或拉出,我如何清理这些问题并最小化维护者的合并冲突?

如果人们有一个为Xcode创建的.gitignore示例,或者他们用来初始化他们的repos的脚本,那就太棒了!

rob*_*off 15

  1. .DS_Store.gitignore.然后,如果您还没有,请添加.gitignore到回购.(你不应该忽略.gitignore.)现在所有的开发人员都会忽略.DS_Store文件.如果在您投入之前错误地将任何内容添加到回购.DS_Store.gitignore,您现在可以删除它们(在提交中)并且它们应该保持不变.

  2. xcodeproj是一个目录.此目录中唯一必须位于存储库中的project.pbxproj文件是该文件.我通常会将这些行放在我的行中,而忽略所有其他行.gitignore:

    *.xcuserstate
    project.xcworkspace/
    xcuserdata/
    
    Run Code Online (Sandbox Code Playgroud)

    您应该避免在构建设置中放置绝对路径.使用相对路径.

    您的调试和发布版本应该iPhone Developer用作代码签名标识,以便Xcode自动选择本地开发人员的配置文件.当您想要创建IPA(用于分发)时,Xcode将提供使用不同身份重新签名的权限,此时您可以根据需要选择分发配置文件.

  3. 如果您正在尝试使用github中出现这些错误的项目,您可以尝试让维护者修复它们,或者您可以确保.DS_Store在相同的提交中不要触摸文件和代码签名身份你想发送上游.

  • 如果这个答案是正确的,你应该奖励你的赏金. (2认同)

and*_*eld 5

对于有关 .xcodeproj 和合并冲突的第二个问题。

使用.gitattributes文件指定.pbxproj应使用该merge=union策略处理所有文件的合并冲突,这应该意味着 Git 知道合并冲突双方的更改,首先获取上游更改。

这篇文章更深入地解释了它


Eug*_*ine 4

我会一一尝试:

git filter-branchI.仅当您需要从历史记录中完全删除文件时才需要使用。如果这些文件不包含任何信用卡信息,那么我认为以下内容应该足够了:

git rm --cached .DS_Store
git commit -m "{Your message}" 
Run Code Online (Sandbox Code Playgroud)

然后添加该文件.gitignore并提交。

这将从存储库中删除文件,但会将文件保留在工作目录中。如果您推送它,然后其他人将拉取此提交,他们可能会删除其文件,因此您必须传达这一点。通过提交,.gitignore您将阻止其他开发人员再次添加此文件。如果您不是维护者,那么我认为您不应该做任何事情,而是向维护者解决这个问题。

二. 我坚信,任何性质的隐藏文件在大多数情况下都不应该被放入存储库中。因此,我认为您应该对.xcodeproj执行与.DS_Store相同的操作,并将其放入.gitignore并提交。.gitignore是上述规则的例外。

三.如果这些文件被正确忽略,那么它们将来就不会有问题。如果它们已经在仓库中并且有人想要进行此类清理,则应该由维护人员完成并在团队内部进行沟通。

希望有帮助!