🧘

【Unity】GitHubとSourceTreeでバージョン管理する方法

2021/04/26に公開

はじめに

今回はUnityのプロジェクトをGtiHubとSourceTreeを使用してバージョン管理する方法を紹介します。ソースコード管理サービス「GitHub」とコマンドを使用せず簡単にバージョン管理できるツール「SourceTree」を使ったバージョン管理の方法です。私の場合はこの方法でUnityプロジェクトをクラウド管理しており、クラウド管理するならおすすめの方法になっています。

バージョン管理方法はどんなものがある?

基本的にUnityのバージョン管理はGitHubを利用した方法か、UnityVersionControl(旧称:PlasticSCM)というバージョン管理プラットフォームを利用する方法が現在は主流です。シンプルに言うと違いとしてはGithubはストレージ自体の容量制限はありませんが、一回の送信ファイルの容量制限があります。一方UnityVersionControlは無料は5GBまでとなっていますが、送信ファイルの容量制限などは無く、使いやすかったりするそうです。

みんなはどのバージョン管理方法を採用してる?

現在最も利用されているのはGitHubを経由したGitを利用する方法です。下のグラフの通りです。ただPlasticSCMは最近なので今後はそっちも注目されていくでしょう。
What are you using for version control?

🐱GtiHub送信ファイルの容量制限はありますが、基本的に問題にならない場合がほとんどなので今回はGtiHubを採用したバージョン管理について紹介していきます。

GitHubの制限は?

GitHubにもいくつか制限があります。

制限① 無料で100MB以上のファイルをアップロードするのに一部制限がある
制限② 一括でアップロードできるサイズは2GB

また容量制限は推奨が1~5GB未満となっているだけで一個のリポジトリの容量制限はありません(無いはずです)。基本的には個人の場合は無料のプランだけで事足ります。

UnityプロジェクトをGitHubでバージョン管理する方法

では方法について紹介していきます。なお今回GitHubをバージョン管理プラットフォーム、SourceTreeはGitのコマンドライン操作に慣れていないユーザー向けに簡単にバージョン管理を行えるソフトとして使用していきます。なおSouceTreeはGtihubDesktopに差し替えが可能です。

①プロジェクトを作成してSourceTreeをダウンロードする

  1. まずはTestProjectという名前で作成します。


    このプロジェクトをバージョン管理していきます。

  2. SourceTreeにアクセスしてダウンロードします。

  3. スキップします。

  4. 次へを押します。

  5. 次へを押します。

  6. いいえを押します。

  7. SourceTreeが開きます。

②レポジトリを作成する

  1. Createから参照をクリック。

  2. Unityのプロジェクトフォルダを選択して、フォルダを選択をクリック。

  3. 作成をクリック。

  4. こんな感じに表示される↓

  5. Library~ファイル(適当なもので良いです)を右クリック > 無視を選択します。

  6. 以下にある物を全て無視を選択して、OKを押す。

  7. .gitignoreファイルが作成されます。

  8. Unity gitignore(こちらのサイト)と調べてコピーします。

  9. 一番上に作成されたgitignoreを右クリック > エクスプローラーで表示

  10. メモ帳などでgitignoreを開きます。

  11. Library/とテキストがありますが、これは削除します。

    何もない状態にします。

  12. 先ほどサイトでコピーしたテキストを貼り付けてCtrl+Sで保存

gitignoreはどこに配置される?

プロジェクトのAssetsなどと同じ階層に作成されます。gitignoreはこの階層に配置する事でコミットする際に指定ファイルを無視してくれるようになります。

  1. 全てインデックスに追加をクリックします。

  2. なんでもよいですが「First」とコメントしてコミットをクリック。

  3. こうなります↓

③GitHubと連携させる

  1. GitHubにログインします。

  2. Newをクリック。

  3. TestProjectと入力してPrivateにします。Createをクリック。(gitignoreは既に作成済みなので設定する必要ありません)

  4. コピーします。

  5. 設定を開く

  6. 追加をクリック

  7. URLにペーストします。リモート名はorigin。ユーザー名にはgithubのユーザー名をそのまま入力します(GenericAccountの入力はおそらく必須ではありません)。

  8. プッシュをクリック

  9. チェックいれてプッシュ

  10. こんな感じに↓

  11. Gtihubのサイトを更新してみると追加されているのが確認できます。

  12. あとはSourceTreeのHistory(履歴)から右クリック→現在のブランチをこのコミットまでリセット(Hard)ですぐに前のバージョンに戻せます。

    GithubからバージョンのデータをClone(ダウンロード)もできます。

    ~終わり~

プッシュする時の注意点

最初に記載した制限として100MB以上の一つのファイルはアップロードできない。一括でアップロードできるサイズは2GBがあるので、こまめにプッシュするのが大事。もし制限にひっかかったらエラー文で出ます。解決するには一度のプッシュするファイルを減らす必要があります。

GitHubのデータ制限とGitLFSについて

転送量が一つのファイルサイズが100MB超えるとプッシュできません。一つのファイルが100MBを超える場合はほぼありませんが、もしどうしようもない時は途中からGitLFSを導入を検討しましょう。

以下GitLFS導入手順。Sourcetreeからプロジェクトを開いて、メニューのリポジトリのGitLFS→初期化を選択。GitLFS→ファイルの追跡・未追跡を選択してgitLFSに載せるファイルの拡張子を追加する。どの拡張子を載せるべきかはコミットボタンを押せば、このファイルは2MB以上です!注意!(ファイル名.拡張子)みたいな感じで出てくる。例えば、fbxとかassetstoreとか,unityとかの拡張子が大きかったりする。またGitLFSを使ったプロジェクトをgithubからクローンする際にはGitHub for Unityで開かないとエラーになります。Open in Desktopを選択してクローンすれば問題ないです。

gitignoreの無視するファイルの設定方法についても紹介

gitignoreの無視するファイルを追加する方法について紹介します。例えば音楽のファイルなど巨大なファイルデータは無視した方が良い場合があります。そんな時にgitignoreにテキスト追加する事でGitHubへのアップロードする際に指定のファイルを無視させる事ができます。

(すいません、ここからGitHubデスクトップのアプリケーションを使用した方法になります。また編集しておきます)

  1. 例えば以下のフォルダが巨大すぎるので無視したいとしましょう。

  2. Repository > RepositorySettingsを開きます。

  3. そんな時には以下のテキストを

# Ignore a specific folder
/Assets/MyAssets/Ultimate Game Music Collection/

IgnoreFilesの一番下にペーストで追加します。

追加した後のgitignore全体図

This .gitignore file should be placed at the root of your Unity project directory

Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore

/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/

MemoryCaptures can get excessive in size.

They also could contain extremely sensitive data

/[Mm]emoryCaptures/

Recordings can get excessive in size

/[Rr]ecordings/

Uncomment this line if you wish to ignore the asset store tools plugin

/[Aa]ssets/AssetStoreTools*

Autogenerated Jetbrains Rider plugin

/[Aa]ssets/Plugins/Editor/JetBrains*

Visual Studio cache directory

.vs/

Gradle cache directory

.gradle/

Autogenerated VS/MD/Consulo solution and project files

ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db

Unity3D generated meta files

*.pidb.meta
*.pdb.meta
*.mdb.meta

Unity3D generated file on crash reports

sysinfo.txt

Builds

*.apk
*.aab
*.unitypackage
*.app

Crashlytics generated file

crashlytics-build.properties

Packed Addressables

/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata//.bin*

Temporary auto-generated Android Assets

/[Aa]ssets/[Ss]treamingAssets/aa.meta
/[Aa]ssets/[Ss]treamingAssets/aa/*

Ignore a specific folder

/Assets/MyAssets/Ultimate Game Music Collection/

  1. するとGitHubへアップロードされる際に/Assets/MyAssets/Ultimate Game Music Collection/のフォルダは省かれます。

他にも例えば指定のファイル形式を無視したい場合は以下をgitgnoreに追加します。

# Ignore .wav files
*.wav
*.wav.meta

記事は以上です。お疲れ様でした😌

Discussion