【Xcode/Git】.gitignoreファイルの設定方法!役割や反映されない解決法とは?
この記事からわかること
- Xcodeに.gitignoreファイルを設定する方法
- .gitignoreファイルとは?
- 使い方や役割
- 記述方法
- ファイルやパス、否定、コメント、ワイルドカード、エスケープの指定方法
- おすすめの設定例
- 反映されない場合の解決
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
参考文献:gitignore Documentation - Git
参考文献:GitHub:gitignore/Swift.gitignore
.gitignoreファイルとは?
「.gitignore」ファイルとは「ignore(無視する)」の言葉通り、記述されているパスのファイルをGitで管理しないようにするための設定隠しファイルです。ファイルの置き場所に決まりはありませんが複数の.gitignoreファイルを設置していた場合にルートファイルに近いほど優先順位は低く、深い階層にあるファイルほど高くなります。
iOSアプリのプロジェクトを作成するとデフォルトでは存在しないので自身で作成する必要があります。作成方法は後述しますが、隠しファイルなので表示させるには「Shift + command + .」を同時押しすることで表示/非表示を切り替えることができます。
Swift/Xcodeでの.gitignoreファイル作成方法
Swiftプロジェクトの設定をしたら「Create Git repository on my Mac」にチェックを入れて作成します。これでローカルリポジトリが作成されXcode内がGitの管理下になります。
.gitignoreファイルを作成するにはターミナルから操作していきます。プロジェクトのパスへカレントディレクトリを合わせたら、touch
コマンドを使って新規でファイルを作成します。
$ cd プロジェクトのパス
$ touch .gitignore
これで以下画像のようにプロジェクト内に.gitignoreファイルが作成されているはずです。
記述方法
.gitignoreファイルには無視させたいファイルのファイル名もしくはパスを順番に記述していきます。
コメント行
#
を行頭に記述するとその行はコメント扱いになり反映されなくなります。
# これはコメント行
ファイル指定
ファイル名は拡張子を含めて指定します。
setting.swift
ディレクトリ指定
ディレクトリ名を指定する際は/
の位置で意味合いが変化します。
# 全てのModelsディレクトリを無視する
Models/
# カレントディレクトリからの相対パスにあるModelsディレクトリを無視する
/Models/
否定
上の階層で無視するように設定していたパスを再度管理下にするためには行頭に!
を付与します。
!setting.swift
ワイルドカード
ファイル名やパスの指定には*
を使用することで「/」以外のすべてに一致し、?
を使用することで「/」以外の任意の1 文字に一致します。
*.txt
log?.txt
エスケープ文字
ファイル内で特殊な意味を持つ文字(/や*、#など)を使用したい場合はその文字の前に\
を付与することで特殊な意味を持たなくなります。
\#test.txt
Xcodeに指定するおすすめ設定
参考文献:GitHub:gitignore/Swift.gitignore
基本的には上記リンクのものを参考にして作成しています。DS_Store
はMacのフォルダとファイルに関するメタ情報を保存する隠しファイルなのでこれも除外しておきます。以下は私が使用している「.gitignore」です。
## Stores meta information about folders and files
.DS_Store
## User settings
## ファイル内のカーソル位置などの情報ファイルが格納されているディレクトリ
xcuserdata/
## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
## ソースコード管理(SCM)に関する設定ファイル
*.xcscmblueprint
## Xcode8以前のファイル Xcode9以降はxcscmblueprintに含まれている
*.xccheckout
## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
## ビルド時に生成されるバイナリやリソース
build/
## ビルド時に生成されるログやキャッシュなど
DerivedData/
## ビルドプロセス中のバックアップなどに使用
*.moved-aside
## ユーザー固有の設定情報
*.pbxuser
## 新規ユーザー用の初期設定ファイル
!default.pbxuser
## モード設定
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
## ビルドパースペクティブ
*.perspectivev3
!default.perspectivev3
## Obj-C/Swift specific
## Objective-Cのヘッダーマップ
*.hmap
## アプリのアーカイブ
*.ipa
*.dSYM.zip
*.dSYM
## Playgrounds
timeline.xctimeline
playground.xcworkspace
## 以下ライブラリなど
# Swift Package Manager
.build/
# CocoaPods
# Pods/
# *.xcworkspace
# Firebase
GoogleService-Info.plist
# Carthage
Carthage/Build/
# Accio dependency management
Dependencies/
.accio/
# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots/**/*.png
fastlane/test_output
# Code Injection
iOSInjectionProject/
Firebaseの設定ファイルとなる「GoogleService-Info.plist」も除外するようにしてあります。
おすすめ記事:【Swift UI/Xcode】Firebaseの導入方法!Cocoa Podsでの使い方
.gitignoreを反映させる
基本的には作成したファイルを任意の階層に設置すれば自動で反映されます。もしプロジェクトを起動していた場合は一度閉じてから再度開いてください。
ですがたまにGit内のキャッシュが残っており思った通りに動作しないことがあります。その場合はキャッシュを一度削除してから再度コミットすることで正常に.gitignoreを反映させることができます。
git rm -r --cached .
git add .
git commit -m ".gitignoreを反映"
Xcodeから反映されているか確認する
実際に「.gitignore」を設置したらプロジェクトを立ち上げてXcodeの上部メニューから「Source Control」>「Commit」をクリックして追加対象となっているファイルを確認して見ましょう。
チェックが入っているファイルがコミット対象になっているファイルです。「.gitignore」に記入したファイルやディレクトリはここには表示されなくなっているはずなのでまだここに表示されている場合は再度反映させてみてください。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。