Swift と iOS/Xcode の .gitignore 設定

Swift、iOS、Xcode プロジェクト向けの完全な .gitignore。DerivedData、xcuserdata、CocoaPods、SPM ビルドフォルダ、Xcode ワークスペースメタデータを網羅します。

Language

詳細な説明

Xcode と Swift プロジェクトは大量のビルドキャッシュとユーザー固有のワークスペースデータを生成します。IDE が生成するファイルでの絶え間ないマージコンフリクトを避けるために、適切な .gitignore が不可欠です。

Xcode ビルドアーティファクト:

  • DerivedData/ — Xcode の主要ビルドキャッシュ。コンパイル済みオブジェクトファイル、リンク済みバイナリ、インデックスデータ、モジュールキャッシュを含みます。プロジェクトごとに数ギガバイトに達することもあります。デフォルトでは ~/Library/Developer/Xcode/DerivedData/ に配置されますが、設定によってはプロジェクトディレクトリ内に配置されます。必ず無視してください。
  • build/ — レガシーの Xcode ビルドディレクトリ(DerivedData 以前の時代)。一部の設定や CI システムで今でも使用されます。
  • *.xcarchive — App Store 提出またはアドホック配布用に作成される Xcode アーカイブ。

ユーザー固有の Xcode ファイル:

  • *.xcuserdata/xcuserdata/ — ユーザーごとのブレークポイント、UI レイアウト設定、スキーム設定を含みます。iOS プロジェクトでマージコンフリクトの最大の原因です。必ず無視してください。
  • IDEWorkspaceChecks.plist — 初回起動時のワークスペース信頼ダイアログの状態。
  • *.xccheckout — Xcode ワークスペースのソースコントロールメタデータ。

依存関係管理:

  • Pods/ — CocoaPods の依存関係ディレクトリ。node_modules/ と同様に Podfile.lock から再現可能です。Podfile.lock は必ずコミットしてください。
  • .build/ — Swift Package Manager (SPM) のビルドディレクトリ。フェッチされた依存関係とコンパイル済みプロダクトを含みます。
  • Carthage/Build/ — Carthage のプリビルドフレームワーク。Carthage/Checkouts/ は再現性のためにコミットされることもありますが、両方を無視する方がクリーンです。

その他のパターン:

  • *.dSYM*.dSYM.zip — デバッグシンボルファイル。クラッシュのシンボリケーションに重要ですが、個別にアーカイブすべきでコミットすべきではありません。
  • *.ipa — iOS アプリケーションパッケージ。配布用のデプロイアーティファクトです。
  • *.moved-aside — マージ解決時に Xcode が作成するコンフリクト解決バックアップファイル。
  • *.hmap — C/Objective-C コンパイル時に使用されるヘッダーマップファイル。

コミットすべきもの: *.xcodeproj(プロジェクトファイル)、*.xcworkspace(ワークスペースや CocoaPods 使用時)、PodfilePodfile.lockPackage.swiftPackage.resolved(アプリケーションの場合)。

ユースケース

5人の開発者からなる iOS チームが xcuserdata ファイルでマージコンフリクトを繰り返しており、リポジトリのクリーンアップと将来の Xcode メタデータコミットの防止を必要としています。

試してみる — .gitignore Generator

フルツールを開く