UnityプロジェクトをGit管理する際、Git管理下から除外したほうが良いファイル・フォルダがあります。
主にUnityやIDEが自動生成するキャッシュやソリューションファイル等です。
これらをGit管理に含めてしまうと、毎回のように無意味な変更差分が出てしまう原因となります。
こうなると自分でどこを編集したか分かりにくくなるね…
複数人開発の場合はトラブルの元にもなるね。
これらをGit管理対象に含めないように設定するには、.gitignoreファイルを作成し、これに無視リストを定義していく必要があります。
このようなファイル類は、別環境でクローン プロジェクトをUnityで開けば自動生成されます。
した場合は存在しない状態ですが、.gitignoreファイルを一から作っても良いですが、以下で配布されているUnity向けの.gitignoreファイルを利用するのが手間が少なく確実です。
本記事では、上記.gitignoreファイルを使って無視すべきファイル・ディレクトリ類をGit管理から除外する方法を解説します。
目次 非表示
想定する状況
GitでUnityプロジェクトを管理する場合、Gitルート直下にプロジェクトを置くか、サブディレクトリの下にプロジェクトを置く形になる場合が多いでしょう。
次の階層構造でGitでUnityプロジェクトが管理されている場合を想定します。
ディレクトリの構成例
ここに.gitignoreファイルを適用することとします。
.gitignoreファイルの入手
以下GitHubリポジトリより、Unity向けの.gitignoreファイルをダウンロードします。
ファイルのダウンロードは上記ページのRawボタンから行えます。
ボタンクリック後、PCのローカルディスクに保存してください(WindowsはCtrl + Sキー、MacはCommand + Sキーで保存できます)
この時、保存するファイル名を.gitignoreにリネームしておきます。
ファイル名は必ず.gitignoreとしてください。これ以外の名前では、正しく機能しません。
ターミナルが使える環境では、次のようなコマンドを.gitignoreを置きたいディレクトリで実行すれば、同様の操作が実現できます。
Unityプロジェクトへ.gitignoreを適用する
ここから既存のUnityプロジェクトに対し、先の手順でダウンロードした.gitignoreファイルを適用していきます。
ダウンロードした.gitignoreファイルをUnityプロジェクトのルートディレクトリにコピーしてください。
以下ように、Unityプロジェクトのルート直下に.gitignoreファイルが置かれていればOKです。
必ずUnityプロジェクトフォルダの直下に.gitignoreファイルを設置してください。これ以外の場所では正しく機能しません。
これでLibraryやTempフォルダなどのキャッシュ類が変更差分に現れなくなっていれば成功です。
ここまでの手順を実施してもこれらのフォルダの変更差分が出てしまう場合は、ファイル名や.gitignoreファイルの設置場所が間違っている可能性がありますので、もう一度手順を見直してください。
.gitignoreで無視してはいけないファイル類
Git管理下から除外すると複数人開発で重大なトラブルを起こしてしまうものも存在します。次に紹介するファイルは絶対に除外してはいけないものと認識しておくと良いでしょう。
metaファイル
metaファイルはアセットに紐づく情報を管理するファイルで、GUIDをはじめ様々な付加情報が定義されています。これをGit管理外にしてしまうと、アセット同士の依存関係が壊れて参照が外れたり、様々な設定が初期化されてしまう可能性があります。
もし他人の環境でmetaファイルに更新差分が発生した場合、Unityのバージョンが一致していない等などの要因が考えられます。この場合はまず更新差分を無くす必要があります。
metaファイルの内部構造については、以下記事もご覧ください。
ただし、独自にGit管理下から除外しているアセットに対応するmetaファイルは無視したほうが望ましいです。理由は、他者から見ると、どのアセットにも対応しないmetaファイルだけ存在している状態になってしまうためです。
Unity公式ドキュメントでも、metaファイルをバージョン管理するように指示しています。
参考:https://docs.unity3d.com/ja/current/Manual/ExternalVersionControlSystemSupport.html
Packageフォルダ
Unityプロジェクトで使用するパッケージの情報を管理しています。配下のファイルは漏れなくGit管理する必要があります。
このフォルダを無視対象に追加してしまうと、他人の環境からは必要パッケージがインストールされていないように見えてしまう可能性があります。
別PCでクローンしてUnityプロジェクトを開く時の挙動
.gitignoreが適用されたリポジトリをgit cloneすると、.gitignoreで無視されたファイルやフォルダ類は存在しない状態になります。
この状態でもいつも通りUntiyプロジェクトを開くことが可能です。この時、キャッシュフォルダやソリューションファイル等が自動生成されます。
Libraryフォルダ配下にパッケージファイル類が存在しない場合、Unityプロジェクトを開いたときにネットワークに接続されている必要があります。
これはパッケージをネットワークからダウンロードする処理が走るためです。
Riderをエディタとして使用する場合
Riderをスクリプトのエディタとして使用している場合は、次の記述を.gitignoreファイルに追加することをお勧めします。
上記で無視対象に含めた.ideaディレクトリは、Riderの設定ファイルです。
ソリューションファイルと同様、通常は無視対象に含めて問題ないでしょう。
なお、Assets/Plugins/Editor/JetBrainsフォルダもGit管理下から除外すべきですが、配布されている.gitignoreで既に定義されているので追記する必要はありません。
GitHubから新規リポジトリを作成する場合
GitHubから新規リポジトリを作成するとき、初期設定で.gitignoreファイルを追加することができます。
GitHubの新規リポジトリ作成ページにあるInitialize this repository with > Add .gitignore項目にチェックを入れ、ドロップダウンリストからUnityを選択してください。
これで、Unity向けの.gitignoreファイルが追加された状態でリポジトリが新規作成されます。
さいごに
本記事では、.gitignoreを用いてGit管理下からキャッシュやソリューションファイル等を除外する方法について解説しました。
GitHub公式で配布されているUnityの.gitignoreファイルは現在もメンテナンスされているため、基本的にこちらを活用するのが安心です。追加の定義が必要な場合も、この.gitignoreファイルをカスタマイズするのが楽でしょう。