web-dev-qa-db-ja.com

Unity3Dのソース管理にGitを使うにはどうすればいいですか?

特にUnity 3Dプロジェクトのバイナリの性質を扱う際に、Unity 3Dで Git source controlを使用するためのベストプラクティスは何ですか?ワークフロー、.gitignoreにどのようなパスを含めるか、Unityやプロジェクトにどのような設定をするべきか、そして他に注意すべきことを説明してください。

注:私はAsset Serverを使用することがUnity推奨の方法であることを認識していますが、Gitを使用することにはさまざまな理由があります。その答えがあっても、私がアセットサーバーを使うべきだと主張したり主張したりしないでください。アセットサーバーは本当に私にとって選択肢ではありません。

454

以下は 私の個人ブログ からの抜粋です

3DゲームでGitを使う

2015年10月に更新: GitHubはそれ以来 Git LFS と呼ばれるGit用のプラグインを直接公開しました。これで大規模なバイナリファイルを簡単かつ効率的にバージョン管理できます!

Gitは箱から出してそのまま3Dゲームでうまく動作します。ただし、ここでの主な注意点は、コミット履歴が大きくなるにつれて、大きな(> 5 MB)メディアファイルのバージョン管理が長期にわたって問題になる可能性があることです。バイナリ資産を最終的なものと見なしたときにのみバージョン管理することで、プロジェクトで発生する可能性がある問題を解決しました。私たちの3Dアーティストは Dropbox を使ってWIPアセットを操作しています。これは上記の理由と はるか より速くて簡単なためです(多くのアーティストが積極的にGitを使用したくないでしょう)。

Gitワークフロー

あなたのGitワークフローはチームとしてのあなた自身の経験とあなたが一緒に働く方法を考えてあなた自身のためにあなたが決める必要があるものです。しかしながら。私は適切に名前をつけられた Git Flow 方法論 ここで元の作者によって記述されるように )を強くお勧めします。

ここでは、著者がそれを完璧に説明し、ごくわずかな言葉でも説明するので、その方法論がどのように機能するのかについては深く説明しません。私はしばらくの間私のチームで使ってきました、そしてそれは私たちがこれまでに試した中で最高のワークフローです。

Git GUIクライアントアプリケーション

Git GUIまたはGUIを使用するかどうかという点では、非常に少数のオプションがあるため、これは本当に個人的な好みです。しかし、無料の SourceTreeアプリケーション Git Flow拡張モジュールと完全に連携するので、ここでは SourceTreeチュートリアル= )を読んで、Git Flowの方法論を彼らのアプリケーションに実装してください。

Unity3Dフォルダを無視する

最新版のチェックアウトのために 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

Unity3Dの設定

Unity 3D v4.3以降のバージョンの場合:

  1. (v4.5以降ではこの手順を省略してください)Unity → Preferences → Packages → RepositoryExternalオプションを有効にします。
  2. Editメニューを開き、Project Settings → Editor:を選択します。
    1. Version Control ModeVisible Meta Filesに切り替えます。
    2. Asset Serialization ModeForce Textに切り替えます。
  3. Fileメニューからシーンとプロジェクトを保存します。

既存のリポジトリをLFSに移行しますか?

ステップ ここでそれを行う方法について )については私のブログ投稿をチェックしてください。

追加の設定

Unity3DプロジェクトでGitを使用することによるいくつかの大きな煩わしさの1つは、Gitがディレクトリを気にせず、そこからファイルを削除した後に空のディレクトリを喜んで残してしまうことです。 Unity3Dはこれらのディレクトリ用に* .metaファイルを作成し、Gitがこれらのメタファイルを追加したり削除したりするときにチームメンバー間でちょっとした戦いを引き起こす可能性があります。

このGitマージ後フック をUnity3Dプロジェクトのあるリポジトリ用の/.git/hooks/フォルダに追加します。どのGit pull/mergeの後でも、どのファイルが削除されたかを調べ、存在していたディレクトリが空かどうかを確認します。そしてもしそうならそれを削除します。

486
S.Richmond

Unity 4.3では、環境設定からExternalオプションを有効にする必要がありましたが、Unity 4.5以降はそのためのオプションを削除しました。そのため、完全なセットアッププロセスは以下のようになります。

  1. Visible Meta FilesEditor → Project Settings → Editor → Version Control Modeに切り替える
  2. Force TextEditor → Project Settings → Editor → Asset Serialization Modeに切り替える
  3. 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

ソース管理下に置く必要があるフォルダはAssetsProjectSettingsだけです。

Unity Projectをソース管理下に置くことに関するさらなる情報は この記事 にあります。

55
zasadnyy

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の設定

これらの設定をする必要があります

編集→プロジェクト設定→エディタ→バージョン管理モードで表示メタファイルに切り替えます。

enter image description here

Unity→基本設定→パッケージ→リポジトリで外部オプションを有効にする

enter image description here

編集→プロジェクト設定→エディタ→アセットシリアライゼーションモードで強制テキストに切り替えます。

enter image description here

出典: 3DゲームでGitを使うソース管理

31
NabeelSaleem

述べられたすべてに加えて、それはまた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

19
rygo6

私は興味のある人なら誰でももっと簡単な.gitignoreを投稿できると思いました。

# Ignore Everything
/*

# Except for these:
!/.gitignore
!/Assets
!/Packages
!/ProjectSettings
9
Get Off My Lawn

私たちは現在、Github to Unity拡張との統合へのシームレスな統合を持っています... https://unity.github.com/

Unity用の新しいGitHub拡張は、GitHubのワークフローなどをUnityにもたらし、Git LFSとファイルロックを使って大きなファイルをサポートします。

これを書いている時点では、プロジェクトはアルファ版ですが、個人的なプロジェクトにはまだ使用可能です。

7
Bhupen

私はあなたがBitBucketを使用することを望みます、なぜならそれは一般には公開されておらず、UnityによるBitbucketに関する公式のチュートリアルがあるからです。

https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository

お役に立てれば。

5
Nipun David

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 *

これが役立つことを願っています...すべて最高!

5
Naligator

Edit -> Project Settings -> Editor

バージョン管理をメタファイルに設定します。テキストを強制するようにAsset Serializationを設定します。

私はこれがあなたが望むものだと思います。

5
afpro

あなたはUnityのための Github Unity Extension を使うことができ、それはgitワークフローをUnityのUIに持ち込みます。

Github for Unity 拡張機能のバージョン1.0をリリースしました。

4
Kyle B

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/
4
EllisonLee

Unityは独自のソースバージョン管理も提供します。 unity5以前は、unityAsset Serverでしたが、現在は非推奨です。そして、unityコラボレートと呼ばれる新しいSVN制御システムを立ち上げます。しかし、unityを使用する主な問題とSVNはシーンをコミットしてマージすることです。しかし、Non of svnはこの種の衝突を解決したりシーンをマージしたりする方法を私たちに与えてくれます。なのでどのSVNに精通しているかはあなた次第です。私はMac上でSmartSVNツールを使っています。そして窓にカメ。

enter image description here

2
Shahbaz Ali

Gitignoreのサブジェットに追加するだけです。 gitプロジェクトのルートである場合、推奨される方法はLibraryとTempのみを無視します。あなたが私のようなもので、リポジトリの全体ではなく、リポジトリの一部となるために団結プロジェクトが必要な場合、gitignoreの正しい文字列は次のようになります。

**/[Tt]emp
**/[Ll]ibrary
**/[Bb]uild
0
zambari