筆者はVRChatのためにUnity上でアバターやワールドの編集・アップロードをしていますが、自分も含めて周囲では様々な要因で修復困難な問題にぶち当たり、最初からやり直してしまうケースが散見されています。
バージョン管理をすることで、プロジェクトが壊れても復元できるようになります。 最近Gitを使ってバージョン管理する方法を伝授したのですが、もっと広まってほしいのでここいらで記事にまとめようと思います。
- バージョン管理・Gitとは
- SourceTreeのダウンロードとインストール
- Unityプロジェクトの確認と準備
- SourceTreeにUnityプロジェクトを追加
- 現在の状態を保存する
- 最後に保存した状態に戻す
- 過去のコミットへ戻る(今回はやりません)
わかる人向け:この記事での解説内容まとめ
- SourceTree導入解説
- Unity用gitignoreファイル追加とRepository作成
- SourceTree上でCommitとRevertの方法
バージョン管理・Gitとは
アプリケーション開発等の経験がないと馴染みのない単語だと思います。
簡単に言うと、登録したファイルの変更を追跡して「今の状態を保存」しておくことで、後でプロジェクトが壊れた時に「保存しておいたある時点の状態」に戻したりすることができます。 そういう機能を持ったアプリケーションをバージョン管理ツールと呼んだりします。
その中でも現在メジャーでよく使われているツールがGitです。バージョン管理やGitそのものについての詳しい解説は他の記事を参照してください。
liginc.co.jp ※Unityに限らず、アプリケーション開発関連で仕事にすることを目指している場合は、知らないと話にならないので必読です
本来はチームでアプリケーション開発を効率化するのに使われますが、今回はプロジェクトが壊れてもまた1からやり直すことがないように復元できる環境を作ることが目的となります。
SourceTreeのダウンロードとインストール
Gitは本来コマンド入力でしか操作できないツールであるため、ユーザーにとって使いやすいGitのアプリケーションが世の中にはたくさんあります。
その中でも、今回は筆者が使っているSourceTreeというツールを用いた方法で説明します。
まずはSourceTreeのインストーラーをダウンロードします。
ダウンロードにはライセンス規約とプライバシーポリシーに同意する必要があります。
ダウンロードしたファイルを実行します。最初の質問はSourceTreeを開発している会社が運営しているサービスを利用するかどうかという内容ですが、使わないためスキップします。
次にGitとMercurial(他のバージョン管理ツール)のどれをインストールするかという選択ですが、Gitしか使わないのでGitにだけチェックを入れておいてください。
インストールが完了できたら次へ進みます。
次に共同開発する時用の名前やメールアドレスを入力する設定画面が出ます。が、自分しか使わないため何でもいいです。(せめて日本語は使わないようにしてください)
SSHキーを読み込むか聞かれますが、既に持っている人用の設定なのでいいえと答えます。
SourceTreeが起動してインストールは完了です。
Unityプロジェクトの確認と準備
まずはバージョン管理したいUnityプロジェクトのフォルダを調べましょう。 方法は様々なのでお任せしますが、自分はUnity上でAssetを右クリック→Show in ExplorerでまずはAssetの場所を開きます。
開いた場所にこちらのファイルをダウンロードして設置してください。このファイルはGitで管理しないリストです。 使わなくてもバージョン管理自体はできますが、管理しなくてもいいファイルまで追跡すると時間と容量を食うので使うことをオススメします。
開いた場所に置くとこのような感じになります。
SourceTreeにUnityプロジェクトを追加
SourceTreeで先ほど開いたUnityプロジェクトをバージョン管理する設定をします。まずはUnityプロジェクトのフォルダパスをコピーします。
SourceTreeの画面の「Create」ボタンを押すと「Create a repository」と書かれた画面に遷移します。「保存先のパス:」と書かれた欄にコピーしたUnityプロジェクトのフォルダパスを貼り付けます。
すると「名前:」と書かれた欄に自動的に名前が入り、「作成」ボタンを押せるようになるはずですので、そのままボタンを押します。
既に存在しているフォルダですが本当にいいのかと聞かれます。続行するので「はい」を押します。
このような画面になったら準備完了です。
さらにプロジェクトを追加したい場合は、画面上部のタブ右側の「+」を押すとタブが増えて同じ手順で追加できます。 タブを切り替えて複数プロジェクトを管理できます。
現在の状態を保存する
まず注意していただきたいことがあります。この先SourceTreeの操作をするときはUnityを閉じるようにしましょう。プロジェクトに変更を加えなくても、Unityを開いて閉じるだけで変化が起きるファイルが存在するためです。ひょっとしたらいちいち閉じなくても大丈夫かもしれませんが、安全側に倒すために私はUnityを閉じてSourceTreeの操作をする運用としています。
プロジェクトに変更があると「作業ツリーのファイル」欄に追加・削除・変更のあったファイルがリストされます。「全てインデックスに追加」ボタンを押します。初回はかなり時間がかかることがあるので、辛抱強く待つ必要があります。
すると「Indexにステージしたファイル」欄に項目が移動します。ここに入っているファイルの現在の状態がこの後のコミットで保存されます。作業ツリーに入っている場合は保存されないため、全てのファイルをIndexにステージされるようにしましょう。
続いて下のテキスト入力欄にコメントを入力します。後で自分で見返した時に、ここではどういう状態だったのかわかるように書くことをオススメします。コメントを入力したら右下の「コミット」ボタンを押すと、Indexにステージしたファイルの現在の状況が保存されます。こちらも初回は時間がかかりがちですので、完了するまで待ちます。
完了すると、左ペインの「ブランチ」内に「master」と書かれたものが増えていると思います。それを押すと下記のような画面になっていると思います。
また今後プロジェクトを変更し、現在の状況を保存する時は左上の「コミット」ボタンから同様の操作をしていくと、画面中央に変更の歴史が積み上がっていきます。
このように現在の状態を保存することを「コミット」と呼びます。「いつコミットするべき?」という疑問があるかもしれません。一般的にはきちんとビルドや動作確認ができたバージョンをコミットするのがコツです。
最後に保存した状態に戻す
最後にコミットした状態に戻すというのは、言い換えると「現在の変更を破棄する」ことです。コミット後にぶっ壊れたプロジェクトを復元したいならば、99%はこの操作で事足りると思いますので、このやり方だけわかればとりあえず十分です。
やらかしてしまった後、Unityを閉じてSourceTreeを見ると下記のように作業ツリーに変更のあるファイルが並んでいると思います。まずはそのうち1つをクリックし、「Ctrl+A」のショートカットで全て選択します。ファイル数が多いと一瞬固まったように見えるかも知れませんが、慌てずに全てのファイルが選択されるまで待ちます。
全選択された状態で右クリックし、「削除」か「破棄」の選べる方を押します。変更リストが作業ツリーから全てなくなるまでこの作業を行います。(削除と破棄の2回で全て消えるはずです)
これで最後にコミットした状態に戻ります。そこには元気に走り回るUnityプロジェクトの姿が!
過去のコミットへ戻る(今回はやりません)
SourceTreeでは手軽に過去のコミットへ戻すことができ、その状態から新たな歴史を創っていくことができますが、このあたりはややこしい割に初心者には必要となる場面がほとんどないのでこの記事では説明しません。需要があれば考えます。