gitignoreの作成方法
今回はgitignoreの作成について纏めます。
gitignoreは追跡したくない、あるいはGitの管理下に置きたくないディレクトリやファイルを指定することができます。
このgitignoreに追跡したくないディレクトリやファイルを指定すると、add、commit、pushなどされず、Gitの管理対象から外すことができるのでリポジトリに反映されることはありません。
参考文献
gitignoreの作成手順
1️⃣.gitignore
ファイルを作成していきます
対象のリポジトリのルートディレクトリにcdコマンドで移動します。
そのPJフォルダに対してtouch .gitignore
を実行
touch .gitignore
作成できたか確認を行います。
ls -la
Finderでは隠しファイル(ドットで始まるファイル)は表示されません。
Shift + Command + .(ドット)
を押すと表示・非表示の切り替えができます。
2️⃣管理対象外にしたいファイルを指定
では実際に管理対象に外したいファイルを指定していきます。
ここで指定することによりGitの差分監視対象から除外されます。
Gitの管理対象はチームで共有すべき「ソースコードやリソース」だけにします。
例えば.DS_Store
やPods/
などがあります。
-
自動生成ファイル:「アプリが勝手に作るファイル」(
Pods/
、build/
,DerivedData/
など)- 例えば
Pods/
はCocoaPodsで追加したライブラリ群です
このような自動生成ファイルは数千〜数万のファイルになることもあります。
これをGitで管理するとクローン・プッシュ・プルが重くなってしまいます。
- 例えば
-
個人の環境ファイル:「自分のMacにしか関係ないファイル」(
.DS_Store
など)- 例えば
.DS_Store
はMacのフォルダ設定ファイルです
これを毎回上げると無意味な変更がGitに表示されて、レビューがめんどくさくなります。
- 例えば
-
秘密情報・設定ファイル:「個人の鍵」や「金庫の暗証番号」(
GoogleService-Info.plist
、)- 例えば
GoogleService-Info.plist
はFirebaseなどの設定ファイルになり、アプリの秘密鍵が入ってる可能性あります
APIキー、DBパスワード、Firebase情報などが公開リポジトリにアップロードされる可能性があります。
- 例えば
-
Xcodeプロジェクト特有のファイル:「人によって違う設定」(
UserInterfaceState.xcuserstate
、xcdebugger
、xcschememanagement.plist
など)- 例えばカーソル位置やタブの開き具合など個人のエディタ状態を記録する
UserInterfaceState.xcuserstate
や、ブレークポイントなどXcodeデバッグ設定を含むファイルのxcdebugger
があります - このような個人設定ファイルを共有すると、他の人のXcodeが変な挙動をすることもあります
「チームメンバーのビルドできない or 動作がおかしいと連絡してくる」など問題が発生します。
- 例えばカーソル位置やタブの開き具合など個人のエディタ状態を記録する
このように容量が重くなり作業が遅くなる、秘密情報が漏れセキュリティリスクが高まる、設定の不一致が発生し他の人がうまく動かせない、差分がゴチャゴチャになりレビューが大変になる。など様々な問題が発生するため含めないようにします。
今回は下記を含めないよう指定します。
Pods/
.DS_Store
*/ios/GoogleService-Info.plist
UserInterfaceState.xcuserstate
xcdebugger
xcschememanagement.plist
注意:最後に空白行を1行追加するのがおすすめです。これは、最終行が正しく読み込まれない場合を防ぐためです。
ここまで対応したらcommand + S
で保存して閉じれば完成です。
⚠️対象外となるファイル
gitignoreに追加したファイルは、以降Gitの監視対象から除外されましたが、既に過去でコミットしてしまった物に関してはgitignoreに登録しているものは正常に除外されたわけではありません。
なので既にコミットしたことのあるファイルやディレクトリに関しては、下記のコマンドを実行してください。
git rm -r --cached <ファイル名>
ファイル自体はローカルから削除されず、Gitの管理からだけ外されます。
これを行うことでキャッシュが削除され、以降は完全に監視対象から除外されるようになってます。
まとめ
今回はgitignore
ファイルについてまとめました。これも開発PJなどにより変更されると思いますが、何を入れる入れないの判断ができるように、ファイルの種類や影響を理解しておくことが大切だと感じました。
プロジェクトごとの特性に応じて柔軟に対応していくことも意識したいです。