Unityは、アセットフォルダー内のfoldersのメタファイルを作成および削除します。
バージョン管理を使用する場合、これは迷惑な状況を作成する可能性があります(スキップして質問に進むことができます):誰かが無視されるファイルのフォルダーを作成しますが、フォルダーのメタファイルを無視することを忘れます。 Unityがメタファイルを作成し、ユーザーがバージョン管理にメタを追加します。別の人が変更セットを取得し、フォルダーがないため、Unityがメタファイルを削除し、バージョン管理からメタファイルを削除します。チームの全員がこれを理解しているわけではないので、プロセスは地獄からループで永続化されます。
驚くべきことに、これは常に起こります。したがって、2つの質問:
nity docs say:
新しいアセットを作成するときは、アセット自体と関連する.metaファイルの両方がバージョン管理に追加されていることを確認してください。
私にとって、これはバージョン管理下に置くのに十分な理由です。問題を解決するための2つのアプローチがあります。
さまざまなgitコマンドを試してみましたが、次の方法が役立ちます。gitフックスクリプトは、.gitignoreが変更されたかどうかを最初に確認する必要があります。
git diff-index --cached --name-only HEAD | grep ".gitignore"
Assetsフォルダーの下にある場合、.gitignoreに新しく追加されたすべての行のディレクトリ名を出力します。
git diff --cached --Word-diff=plain .gitignore | grep -o -e "{+\/.*\/Assets\/.*+}" | cut -d + -f 2
更新
このような事前コミットフックを書いたところです:-) GitHubリポジトリを参照してください git-pre-commit-hook-unity-assets コードと ブログ投稿 について詳細。
これを.gitignoreに追加します
#Ignore all .meta file
*.meta
#But not source file with postfix. which is everything but a folder
!*.*.meta
これは、接尾辞なしのファイルを無視します。しかし、それは痛くないはずです。