特にUnity 3Dプロジェクトのバイナリの性質を扱う際に、Unity 3Dで Git source controlを使用するためのベストプラクティスは何ですか?ワークフロー、.gitignoreにどのようなパスを含めるか、Unityやプロジェクトにどのような設定をするべきか、そして他に注意すべきことを説明してください。
注:私はAsset Serverを使用することがUnity推奨の方法であることを認識していますが、Gitを使用することにはさまざまな理由があります。その答えがあっても、私がアセットサーバーを使うべきだと主張したり主張したりしないでください。アセットサーバーは本当に私にとって選択肢ではありません。
以下は 私の個人ブログ からの抜粋です
2015年10月に更新: GitHubはそれ以来 Git LFS と呼ばれるGit用のプラグインを直接公開しました。これで大規模なバイナリファイルを簡単かつ効率的にバージョン管理できます!
Gitは箱から出してそのまま3Dゲームでうまく動作します。ただし、ここでの主な注意点は、コミット履歴が大きくなるにつれて、大きな(> 5 MB)メディアファイルのバージョン管理が長期にわたって問題になる可能性があることです。バイナリ資産を最終的なものと見なしたときにのみバージョン管理することで、プロジェクトで発生する可能性がある問題を解決しました。私たちの3Dアーティストは Dropbox を使ってWIPアセットを操作しています。これは上記の理由と はるか より速くて簡単なためです(多くのアーティストが積極的にGitを使用したくないでしょう)。
あなたのGitワークフローはチームとしてのあなた自身の経験とあなたが一緒に働く方法を考えてあなた自身のためにあなたが決める必要があるものです。しかしながら。私は適切に名前をつけられた Git Flow 方法論 ここで元の作者によって記述されるように )を強くお勧めします。
ここでは、著者がそれを完璧に説明し、ごくわずかな言葉でも説明するので、その方法論がどのように機能するのかについては深く説明しません。私はしばらくの間私のチームで使ってきました、そしてそれは私たちがこれまでに試した中で最高のワークフローです。
Git GUIまたはGUIを使用するかどうかという点では、非常に少数のオプションがあるため、これは本当に個人的な好みです。しかし、無料の SourceTreeアプリケーション Git Flow拡張モジュールと完全に連携するので、ここでは SourceTreeチュートリアル= )を読んで、Git Flowの方法論を彼らのアプリケーションに実装してください。
最新版のチェックアウトのために GithubはOS固有の情報なしでUnity.gitignore file をメンテナンスしました。
# =============== #
# Unity generated #
# =============== #
Temp/
Library/
# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj
# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
Unity 3D v4.3以降のバージョンの場合:
Unity → Preferences → Packages → Repository
でExternal
オプションを有効にします。Edit
メニューを開き、Project Settings → Editor
:を選択します。Version Control Mode
をVisible Meta Files
に切り替えます。Asset Serialization Mode
をForce Text
に切り替えます。File
メニューからシーンとプロジェクトを保存します。ステップ ここでそれを行う方法について )については私のブログ投稿をチェックしてください。
Unity3DプロジェクトでGitを使用することによるいくつかの大きな煩わしさの1つは、Gitがディレクトリを気にせず、そこからファイルを削除した後に空のディレクトリを喜んで残してしまうことです。 Unity3Dはこれらのディレクトリ用に* .metaファイルを作成し、Gitがこれらのメタファイルを追加したり削除したりするときにチームメンバー間でちょっとした戦いを引き起こす可能性があります。
このGitマージ後フック をUnity3Dプロジェクトのあるリポジトリ用の/.git/hooks/
フォルダに追加します。どのGit pull/mergeの後でも、どのファイルが削除されたかを調べ、存在していたディレクトリが空かどうかを確認します。そしてもしそうならそれを削除します。
Unity 4.3では、環境設定からExternalオプションを有効にする必要がありましたが、Unity 4.5以降はそのためのオプションを削除しました。そのため、完全なセットアッププロセスは以下のようになります。
Visible Meta Files
でEditor → Project Settings → Editor → Version Control Mode
に切り替えるForce Text
でEditor → Project Settings → Editor → Asset Serialization Mode
に切り替えるFile
メニューからシーンとプロジェクトを保存また、私たちのチームはもう少し拡張された.gitignore
ファイルを使用しています。
# =============== #
# Unity generated #
# =============== #
Temp/
Library/
# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
ExportedObj/
obj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj
# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
ソース管理下に置く必要があるフォルダはAssets
とProjectSettings
だけです。
Unity Projectをソース管理下に置くことに関するさらなる情報は この記事 にあります。
GITって何?
Gitは、2005年にLinus Torvaldsによって開発されたフリーでオープンソースの分散バージョン管理システム(SCM)です(Linux OSの創設者)。小規模から大規模なプロジェクトまで、すべてをスピードと効率で制御するために作成されています。グーグル、フェイスブック、マイクロソフトのような大手企業は毎日GITを使用しています。
GITについてもっと知りたいなら、こちらをチェックしてください クイックチュートリアル 、
まず最初に、あなたのGit環境がセットアップされていることを確認してください。あなたはあなたのローカル環境とGitリポジトリの両方をセットアップする必要があります(私はGithub.comを好む)。
GITクライアントアプリケーションMac/Windows
GIT guiクライアントアプリケーションの場合、Github.comにアクセスすることをお勧めします。
GitHubは、友達、同僚、同級生、そして見知らぬ人とコードを共有するための場所です。 500万人以上の人々がGitHubを使って素晴らしいものを一緒に構築しています。
Unity3dの設定
これらの設定をする必要があります
編集→プロジェクト設定→エディタ→バージョン管理モードで表示メタファイルに切り替えます。
Unity→基本設定→パッケージ→リポジトリで外部オプションを有効にする
編集→プロジェクト設定→エディタ→アセットシリアライゼーションモードで強制テキストに切り替えます。
述べられたすべてに加えて、それはまたUnityと git lfs を使うのが理想的です。それが出てきて以来、私はこれを使用してきました、そしてそれは問題ありませんでした。
あなたの.gitignoreファイルの隣にこの.gitattributesを追加したいでしょう。
*.cs diff=csharp text
*.cginc text
*.shader text
*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.physicsMaterial2D merge=unityyamlmerge eol=lf
*.physicsMaterial merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf
*.a filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.FBX filter=lfs diff=lfs merge=lfs -text
*.rns filter=lfs diff=lfs merge=lfs -text
*.reason filter=lfs diff=lfs merge=lfs -text
*.lxo filter=lfs diff=lfs merge=lfs -text
それが私のローリングファイルリストです。リスト以外の追加のバイナリファイルを使用する場合は、それらを追加してください。
私はyamlmergeを使うように設定されたファイルも持っています、あなたはこれを設定する必要があるでしょう。あなたはここでそれについて読むことができます: http://docs.unity3d.com/Manual/SmartMerge.html
私は興味のある人なら誰でももっと簡単な.gitignore
を投稿できると思いました。
# Ignore Everything
/*
# Except for these:
!/.gitignore
!/Assets
!/Packages
!/ProjectSettings
私たちは現在、Github to Unity拡張との統合へのシームレスな統合を持っています... https://unity.github.com/
Unity用の新しいGitHub拡張は、GitHubのワークフローなどをUnityにもたらし、Git LFSとファイルロックを使って大きなファイルをサポートします。
これを書いている時点では、プロジェクトはアルファ版ですが、個人的なプロジェクトにはまだ使用可能です。
私はあなたがBitBucketを使用することを望みます、なぜならそれは一般には公開されておらず、UnityによるBitbucketに関する公式のチュートリアルがあるからです。
https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository
お役に立てれば。
Unity-3dソースコードのバージョン管理にgitを使用するときに覚えておくべき主なこと:
(A)しないライブラリフォルダにチェックインします 。私は過去に何度もこの過ちを犯し、そしてそれに苦しんできました!プロジェクト/ファイルをgitに追加する前に、ORライブラリフォルダを削除してください。
(B) "Visible Meta Files"を使用する - 最新のunityバージョンの場合 - 5.3.4以降ではこれがデフォルトで行われる。いくつかの以前のバージョンでは、あなたは以下の設定を変更する必要があります:編集 - >プロジェクト設定 - >バージョン管理
(C)Unity-の.gitignoreファイルを使用して、健全性が維持され、ファイルが不必要に追加されないようにします。 - Android/tizenの場合 - リポジトリに追加されないグーグルは統一のための.gitignoreファイルを探していますORそうでなければGitHubによって提供されたUnityのためのこのモデル.gitignoreを使います: https://github.com/github/gitignore/blob/master/Unity.gitignore
(D).gitignoreファイルが追加された最初のファイルとしてリポジトリに追加されていることを確認してください - これまで私は個人的に.gitignoreファイルの追加を見逃していました。 これがなぜ起こったのかについて後から多くの考えを持っています - しかし、今日私はリポジトリをセットアップする最初のステップとしてちょうど.gitignoreファイルをコピーして追加します。
Unityプロジェクトをgit対応にするには、次の手順に従います。
(1)プロジェクトフォルダへ
(2)git initと入力します。
(3).gitignoreファイルをコピーします。MacOSの場合:cp〜/ Downloads/.gitignore Windowsの場合:c:\ Users [yourusername]\Downloads.gitignoreをコピーします。
(4)git add .gitignore
(5)git add *
これが役立つことを願っています...すべて最高!
Edit -> Project Settings -> Editor
バージョン管理をメタファイルに設定します。テキストを強制するようにAsset Serializationを設定します。
私はこれがあなたが望むものだと思います。
あなたはUnityのための Github 、 Unity Extension を使うことができ、それはgitワークフローをUnityのUIに持ち込みます。
Github for Unity 拡張機能のバージョン1.0をリリースしました。
Assets および /ProjectSettings フォルダーのみがgitバージョン管理下に置かれる必要があります。
あなたはこのようなgitignoreを作ることができます。
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.suo
*.userprefs
# Mac
.DS_Store
*.swp
*.swo
Thumbs.db
Thumbs.db.meta
.vs/
Gitignoreのサブジェットに追加するだけです。 gitプロジェクトのルートである場合、推奨される方法はLibraryとTempのみを無視します。あなたが私のようなもので、リポジトリの全体ではなく、リポジトリの一部となるために団結プロジェクトが必要な場合、gitignoreの正しい文字列は次のようになります。
**/[Tt]emp
**/[Ll]ibrary
**/[Bb]uild