バージョン管理しようと思います!
どうも、壁です
今更ながら自分のUnityプロジェクトを
GitHubでバージョン管理しようと思います。
なぜしようと思ったかというとPCの容量を圧迫してきたからです
自分のPCの容量がそこまで多くないのと
Unityのプロジェクトが意外と容量を食うので
SSDの容量がそろそろやヴぁいんですよね…
ということでプロジェクトのバージョン管理手順を以下に
まとめようと思います!
早速いきましょう!
GitHub?
GitHubとはバージョン管理ツールです
複数人で同じプロジェクトに対して作業を行う時に必要になってきます
一応以前以下で記事を作成しました↓
よければ見てください…ブログ初期に作成した記事で
自分で見返して内容うっすって思っており…見なくてもいいです 笑
バージョン管理は何を使うべきなのか今一度考えてみる
業務でGitHub使っているのでGitHubでええやろと
短絡的に考えてしまっていましたが、本当にそれでよいのか?
ということを今一度調査してみようと思います。
結果だけでいうとやっぱGitがいいみたいです
以下のUnityでのバージョン管理ツールに対する統計情報が見つかりまして

結果的にGitが一番使われているみたいです!
ということでまぁGitHubでいいんじゃね?ってことにします!
ソフトウェアはSourceTreeを使います!
GitHubも分からんのにSourceTreeってなんやねん!
という話になるかもですが
こちらはPCにインストールして使うソフトウェアです
GitHubはいわばプロジェクトファイルをクラウドに置いておく
サービスみたいなもんです(大雑把)
GitHub単体だけでも使えるのは使えるようですが
それだけだとコマンドを使いこなす必要があるんです
例えば初期のWindowsはコマンドだけで操作していました
それがWindows95あたりからUIで使えるようになり爆発的にヒットしました
それと同じでコマンドだけで使うのってめんどくさいから
UIで使えるようなソフトウェアがあるわけです
その中で業務で使っているのが「SourceTree」なので
それを使おうと思います!

実際にやってみよう!概要
やることの概要は以下です
・リモートリポジトリの作成
・リモートリポジトリをローカルへクローン
・リモートリポジトリへプッシュ
リモートリポジトリの作成
こちら簡単です
GitHubにログインしてHomeから右上の+をクリックし
New repositoryをクリックします

すると作成するリモートリポジトリの設定画面が出てくるので
以下画像の通り設定しましょう!

Choose visibilityは必ずPrivateにしましょう!
PublicとPrivateが選べるのですがPublicにすると
インターネットに繋いでいる人が
誰でもこのリポジトリを参照できるようになってしまいます
これはもし有料のアセットを使っていた場合、それも公開してしまうことに
なるのでかなり問題になります!注意しましょう!
.gitignoreについてですが
ignoreは「無視する」という意味の英単語です
ローカルリポジトリの中でリモートリポジトリのコミット対象から
除外するファイルを指定してあげることができるのですが
Unity独自のファイルで無くても大丈夫なファイルを
リモートリポジトリにはコミットさせないようにする感じです
ここはしなくてもよいですが、した方がスッキリとします!
最後にCreate repositoryをクリックすると新規リポジトリが作成されます!

リモートリポジトリをローカルへクローン
まずクローンとは何かというと
リモートのプロジェクトをローカルにコピーすることです
ではsourceTreeを開いてクローンタブを押下すると以下のようになります

①にリモートリポジトリのURLを入力します
②にローカルに保存するフォルダを選択します
そうすると一番下のクローンが活性化されるので
押下するとクローンされます
②は任意の場所を指定すればよいのですが
①についてはGitHubの対象リポジトリのページを開いて
(以下の画像を参照してください)
Codeをクリック→HTTPSでURLが表示されている横の
コピーボタンをクリックしてURLをコピーして
その値を入力してください!

入力がOKなら下のクローンボタンが押下できるようになるので
クリックしてクローンを完了してください!

これでクローン完了です
実際にクローンしたフォルダ↓を見てみましょう!

当たり前ですがファイルはほとんどありません
.gitフォルダと.gitignoreファイルのみです
.gitフォルダはバージョン管理するための情報を格納するフォルダですね
.gitignoreはバージョン管理するファイルの中で除外するファイルの情報を
格納しておくファイルです。
「ファイル」という単語が多すぎて訳わかめですみません…
どんなプロジェクトでもバージョン管理には不要なファイルというのが
あります。
Unityでいうとプロジェクトを閉じて次に開いた時って
前回閉じる前に開いていたシーンが開いた状態になっていますよね
つまり前回プロジェクトを開いた時の情報を保持しているんです
これって別にバージョン管理としては不要なので、そういったものを
記憶しておくファイルたちを除外してあげるわけです
リモートリポジトリへプッシュ
クローンまで出来たので最後にリモートリポジトリへプッシュを行いましょう
リモートリポジトリへプッシュというのは
ローカルの情報をリモートリポジトリへコピーするようなイメージです
プッシュ→ローカルからリモートへ情報をコピー
プル→リモートからローカルへ情報をコピー
今クローンしたフォルダ内には何もないので
そこに作成したブロック崩しのUnityプロジェクトをコピーしてあげます

コピーが完了したらsourcetreeに戻ってみましょう
以下のように作業ツリーのファイルの欄にコピーしたファイルが出てきました
これを全てリモートにコピーしたいので「全てインデックスに追加」
を押下しましょう

すると全てのファイルが上の欄(Indexにステージしたファイル)に
移動しました

上の欄はリモートリポジトリにコピーする対象のファイルです
で、ファイルを移動したら下の「変更をすぐにorigin/mainにプッシュする」が
チェックできるようになります

チェックボックスの上の欄はコメントです
どういったファイルをリモートにコピーしたのかコメントしましょう
それが終わったらコミットを押下します
するとリモートへファイルのコピーを行われます
コミットが完了したらGitHubで対象のリモートリポジトリを
確認してみましょう↓

ローカルのファイルがリモートへコピーされました!
これで一通りの作業は完了になります!
この状態のリポジトリのプロジェクトをローカルにコピーしたい場合は
リモートリポジトリをローカルへクローン
の手順をもう一度行えばよいです!
SceneがUntitledになってしまう問題
上記まででリモートリポジトリにUnityプロジェクトをコミットしました
んで、その状態のリポジトリを再度ローカルにクローンして
Unityプロジェクトを開いてみたら以下のようになりました↓

Hierarchyウィンドでいつもシーンが開いている状態だったのが
Untitledとなっていて何もシーンが開いていない状態になりました
これはコミットがちゃんと出来ていないからか!?と
思ったのですが色々調べていったらこれはそういうものみたいです
なぜUntitledとなるのか?
プロジェクトを閉じてもう一度開いたときに最後に開いていた
シーンが出ているのはLibraryフォルダ内にある
LastSceneManagerSetup.txtにその情報が保存されていて
プロジェクトを開くときにそこから情報を読み込んでUnityエディタが
シーンを自動で開いてくれているからみたいです
ただLibraryフォルダは別に無くても問題ないので
GitHubではコミット対象として無視するのが一般的です
一般的に.gitignoreにLobraryフォルダを
コミット除外するように記載されています
なのでクローン後にUntitledとなるのは別に問題ないです
これ、知らなかったのでマジで何時間も調べて大変でした…
おわりに
とりあえずGitHubでプロジェクトをバージョン管理することに成功いたしました!
えがった、えがった!
