こんにちは、ZeniZeniです。
#問題
最近サークルで複数人開発を経験したんですが、そのときTagやLayerといったProjectSettingsフォルダーに入っているような設定項目の競合でかなり痛い目を見ました。
何が起こったかというと、それらの.assetフォルダはよくある.gitattributeの設定ではLFSのトラッキング対象となっており、バイナリファイルで管理されるようになります。そのため、異なるTag編集を行ったブランチをマージして、コンフリクトが発生したとき、下の画像のように両方の変更を反映させることができなくなります。
しかしUnityプロジェクトをGitHubで管理する場合は、ほとんどの場合でGit LFSを使うと思います。そのため、Git LFSを使ったうえでProjectSettingsフォルダー内のファイルはLFSのトラッキング対象から外して、txtデータで扱う方法が望まれます。
ProjectSettingsフォルダー内のファイルで50MB超えるようなものはない…はず…
#対処法
対処法は簡単で、ディレクトリ毎にLFSの適用を変えればいいのです。こちらのサイトが参考になりました。
具体的には、ProjectSettingsフォルダー内にも.gitattributesファイルを新しく作成し、そこに
*.asset !filter !diff !merge text
と書くだけです。
こうすれば、上の画像のようにTagなどで競合が起こった時に、両方の変更をうまく反映させることが可能になります。