我应该将 Xcode 项目的哪些文件存储在版本控制中?

Posted

技术标签:

【中文标题】我应该将 Xcode 项目的哪些文件存储在版本控制中?【英文标题】:What files of an Xcode project should I store in version control? 【发布时间】:2015-10-31 15:53:19 【问题描述】:

我是 Xcode 的新手,刚刚发现它在项目目录中存储了一堆用户信息和其他东西,这些东西我在版本控制中并不真正需要,也不想放在 Github 上。 Xcode 项目基本上是这样的:

 1 AppName/
 2 ├── AppName
 3 │   ├── Base.lproj
 4 │   │   ├── LaunchScreen.xib
 5 │   │   └── Main.storyboard
 6 │   ├── Images.xcassets
 7 │   │   └── AppIcon.appiconset
 8 │   │       └── Contents.json
 9 │   ├── AppDelegate.swift
10 │   ├── Info.plist
11 │   └── ViewController.swift
12 ├── AppName.xcodeproj
13 │   ├── project.xcworkspace
14 │   │   ├── xcuserdata
15 │   │   │   └── user1.xcuserdatad
16 │   │   │       └── UserInterfaceState.xcuserstate
17 │   │   └── contents.xcworkspacedata
18 │   ├── xcuserdata
19 │   │   └── user1.xcuserdatad
20 │   │       └── xcschemes
21 │   │           ├── AppName.xcscheme
22 │   │           └── xcschememanagement.plist
23 │   └── project.pbxproj
24 └── AppNameTests
25     ├── AppNameTests.swift
26     └── Info.plist

我倾向于只提交 AppName/AppNameTests/ 并排除 AppName.xcodeproj/ 目录。这样做的推荐方法是什么?

【问题讨论】:

Git ignore file for Xcode projects 的可能重复项 【参考方案1】:

您需要使用.gitignore 文件来指定您不想存储在 GitHub 中的文件。

Here is how to create the file 和 here's what should go in that .gitignore file。

【讨论】:

【参考方案2】:

一个更好的问题是我的 git 忽略文件中应该包含什么。这是 github 存储库的链接,其中包含您需要的文件

https://github.com/github/gitignore/blob/master/Global/Xcode.gitignore

确保您从该文件开始,以便正确忽略这些文件,因为如果您不添加某些文件,我已经添加了这些文件,您将不得不手动删除它们。

【讨论】:

【参考方案3】:

“推荐方式”实际上取决于您想对项目做什么。通常,有三种选择:

只签入那些构建项目所必需的文件 添加反映开发自定义的文件(例如在编辑器中存储当前可见文件名称的项目文件) 生成的文件,以制作项目状态的完整快照。

使用最后一个,您可能会遇到时间戳问题(虽然可以告诉 git 了解有关提交时间的一些信息 - 请参阅 Checking out old file WITH original create/modified timestamps - 很少有人这样做)。如果没有使用原始时间戳检索文件的系统,您最终会得到一组文件,每次提交时都需要重新编译。

如果您将文件移动到文件系统的另一部分(或尝试与他人共享文件),即使保存自定义文件也可能会出现问题。

所以...使用.gitignore 过滤掉不需要构建的文件。但请检查您是否可以使用全新的结帐成功构建。

【讨论】:

以上是关于我应该将 Xcode 项目的哪些文件存储在版本控制中?的主要内容,如果未能解决你的问题,请参考以下文章

.gitignore 用于 Xcode 项目

将 localizable.strings 提交到存储库

Xcode 项目的 Git 忽略文件正在忽略 .swift 文件

从 git 存储库中排除 ios 项目的哪些文件? [复制]

Xcode 4.3 如何使用 SVN 合并来自两个开发人员的故事板更改?

在 XCode 中清除存储库的历史列表