xcworkspace是否应该被加入gitignore?

34

我正在使用 GitHubObjectiveCGitIgnore

当我进入Sourcetree提交时,我看到:

project.xcworkspace

这个文件没有被 Github 的 .gitignore 文件忽略。 我不确定是否需要提交并推送这个文件?

3个回答

35
如果您正在使用Cocoapods,则实际上我认为答案取决于一些因素。
- 如果您只想使项目编译和运行“开箱即用”,则可以将所有内容都检入;包括xcworkspace和所有的Pods。 - 如果有一个Pod需要修改,出于某些原因您想将该更改包含在您的项目中,则检入所有内容。例如,我发现了某些未修复的错误,而且自己修复并将Pod与我的项目一起检入比等待更新的Pod或手动集成库(这本质上与检查Pod的结果相同)更容易。或者,派生该仓库,将更改推送到其中,并将Pod指向您的派生。 - 如果您对任何Pod都没有问题,并且已验证使用所指定版本的Pods一切正常,则不必检入xcworkspace文件或Pods。当然,在这种情况下,您将需要运行 pod install
这里没有硬性规定要做什么。有时将所有内容检入值得额外的开销,有时则不必要。这取决于对您最方便的事情。

如果我理解你的问题正确的话,在xcworkspace中有对pods的引用。 如果我想在git(bitbucket)的托管提供商上节省空间,就没有必要检入pods。更好的方式是手动运行pod install。 但是,如果我没有检入xcworkspace,我怎么知道哪些pods是缺失的呢? - Radenko Zec
虽然我同意你可以fork仓库并将pod指向它,但结果是一样的,特别是如果你指定了特定版本的pod。而且你关于pod install覆盖更改的说法是不正确的。如果pod已经存在于项目中,它将不会被覆盖。只有pod update可能会这样做。如果你正在与开发团队合作,你可能会告诉他们不要运行pod update,除非有充分的理由。唯一能够节省的就是将这些额外的pod文件同步到github的开销。 - JJC
3
如果您选择最小化的检入方式,应完全不检入xcworkspace文件。它不在.gitignore文件中的默认设置中,是因为该文件可以自行创建和管理,而不是cocoapods所必需的。 Cocoapods使用项目文件夹中的Podfile和现有的xcproject生成工作区并同步所有Pods。 - JJC
2
进一步澄清,xcworkspace中对pods的引用是在每次在新项目上运行pod install时生成的,因此强调了如果您不打算同时检入pods,则不应该检入xcworkspace。 - JJC

3

简而言之,是的,应该提交。

我将我的xcworkspace文件检入到我的仓库中。如果您不使用工作区,可能不需要它,但由于我使用Cocoapods,这会创建一个包含原始项目和pods项目的xcworkspace。 使用工作区是处理多个项目集/依赖项的正确方法。


我也计划使用Cocoapods。 通常Github的gitignore文件是正确的,但对我来说提交xcworkspace文件看起来很奇怪。 我进行了调查,发现有些人说可以提交,有些人说不行。 - Radenko Zec
如果你使用Cocoapods,你绝对应该检查一下它。pod install会为你创建一个,但是你不应该检查项目和工作区文件夹中的xcuserdata文件夹 :) - Rich
xcuserdata被Github的gitignore文件忽略,因此不应该进行检入。 - Radenko Zec

1
如果您有或计划在工作区中拥有多个项目(例如项目的子项目),则不应将其添加到.gitignore中。
当执行pod install时,CocoaPods会将其自身的项目添加到工作区中(如果存在工作区)。
一般来说,即使排除了pods,将工作区文件包含在git提交中也更加安全。
无论如何,您都需要执行pod install来编译您的项目,因此,即使提交了一个已经添加了cocoapod项目的工作区文件,也不会引起任何问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接