UnityプロジェクトをGitHubで管理したい（SourceTree編）

# 概要
Unityで作成したコードをGitHubでバージョン管理する手順を記載しています。

Unityは、EclipseやAndroid Studio、Visual Studioなどと違い、GitHubとの連携が最初から用意されているわけではないようで、下記のような方法を選択するようです。

* Github for Unity(https://unity.github.com/)
UnityのAssetとして、GitHub管理したいプロジェクトに追加する方式。
* Source Tree(https://www.sourcetreeapp.com/)
OS上のファイルをGit管理する。という扱いでUnityをGitHub管理する。
* GitHub Desktop(https://desktop.github.com/)
GitHub純正のGit管理アプリ。GitHub側に近いUIなので、ローカル上の管理は戸惑うかも。

# 前提環境
*　macOS 12.2.1（Monterey）
*　SourceTree
*　Unity 2020.3.29f1（Personalライセンス）
*　Github Free（https://github.co.jp/pricing.html ）

# やってみる
Unity Hubなどから新規で作成したプロジェクトをGitHubで管理するまでの流れで進めていきます。
個人的に多いのが２Dでのテンプレで作成しているので、下記のような感じの構成になります。
プロジェクト名は「Sample2D」としておきます。

```
.
├── Assets
│   └── Scenes
├── Library
│   ├── APIUpdater
│   ├── Artifacts
│   ├── PackageCache
│   ├── PackageManager
│   ├── ScriptAssemblies
│   ├── ShaderCache
│   ├── StateCache
│   └── TempArtifacts
├── Logs
├── Packages
├── ProjectSettings
├── UserSettings
└── obj
    └── Debug
```

というわけで、上記のプロジェクトをGitHubへ登録します。

## SourceTreeのインストールなど
前回（[SourceTreeでGitHubを使う](https://qiita.com/TAKANEKOMACHI/items/53058acc15d965d66798) ）で解説したので、そちらを一読してください。

## GitHubにリポジトリを作成する
SourceTreeからGitHubにリポジトリを作成することはできないようです。
なので、先にGitHub側でリポジトリを作成します。

![スクリーンショット 2022-02-23 12.11.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/e694703e-8fa5-eff3-11a9-66dcff09ae26.png)

作成するのは、作成したUnityプロジェクトと同名（Sample2D）としておきます。
自分用のリポジトリなのでPrivateを選択します。
そして、.gitignoreを追加します。（重要）
ここで、Unity用の.gitignoreが標準で用意されているので、追加しておくと余計なファイルをGitHubに登録しないようになります。

![スクリーンショット 2022-02-23 12.14.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/f0f191dd-1404-93a1-8605-b7025cc74014.png)

はい。まずは、空っぽのリポジトリができました。

## SourceTreeでローカルにクローンしてくる
SourceTreeを開いて、リモート側に作成したリポジトリを探します。
見つけたら、リポジトリの右側の「クローン」をクリックして、適当なところにクローンします。
一応書いておきますが、Unityプロジェクトが置かれているところには、すでに同名のフォルダがあるので別の場所にしましょう。

![スクリーンショット 2022-02-23 12.16.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/3e760148-a60f-4ac1-7543-2cd33c5a128a.png)

クローンすると、SourceTreeのローカル側に表示されます。
![スクリーンショット 2022-02-23 12.19.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/5bbd9a94-b20b-6b38-5284-4d87904060d2.png)

## ローカルにクローンしたフォルダにコピーする
Unityプロジェクトをクローンしたフォルダにコピーします。
![スクリーンショット 2022-02-23 12.22.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/904fe4be-6fd8-8fcc-f642-1584bd41a077.png)

## GitHubにプッシュする
正確には、ローカルのGitリポジトリにコミットして、リモートのGitHubにプッシュです。
UnityプロジェクトでGitHub管理にしたくないものの選別は、すでにUnity用の.gitignoreがあるので、気にせずコミットしてOKです。

下記のように、フォルダにコピーした時点で、コミット対象はこのくらい。と数が表示されている（今回は３０ファイル）。

![スクリーンショット 2022-02-23 12.24.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/7f2763e5-fedf-e2a6-4d4a-ec90843092eb.png)

リポジトリをダブルクリックして開くとコミット対象のリストが確認できる
![スクリーンショット 2022-02-23 12.28.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/81071ca6-cb66-1f20-0184-363e2a808d3a.png)

「保留中のファイル」のチェックをつけると、すべての対象にチェックがつくので、チェックをつけます。
![スクリーンショット 2022-02-23 12.28.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/55537df3-0834-9c92-b07f-0f1b946913b3.png)

コミットメッセージに適当に記載して、コミットボタンをおします。

下記のような確認が表示されるのでOKをクリック
![スクリーンショット 2022-02-23 12.31.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/cd740554-a24a-157d-4ab0-2deea9bbf0c2.png)

この時点では、GitHubにはあがってません。まだローカルGitへコミットしただけです。

続いて、GitHubへプッシュします。
![スクリーンショット 2022-02-23 12.32.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/66edde9e-9c26-9a6b-ecec-8c2a2ecf29a7.png)

上記のように、プッシュに通知がきていると思います。
クリックすると、下記のように確認が表示されるので、一応確認してOKボタンをクリックします。
![スクリーンショット 2022-02-23 12.33.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/de56f210-3d63-d216-c4fc-0318523a96cf.png)

これで、GitHubにプッシュされたはずです。

## GitHubで確認してみる
GitHub側で対象のリポジトリを見てみると、無事、Pushできていることが確認できました。
![スクリーンショット 2022-02-23 12.36.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/6220dac5-9793-77a8-7198-8e305d407d02.png)

# このあとの問題
自分はやらかしたので、一応書いておきますが、Unity Hub側で新しくクローンしてプッシュさせたフォルダに切り替えてください。

そうしないと、Git管理されていないほうを更新していって、でもSourceTreeにはコミット対象はない。と言われるアホなことをしでかします。

以上で、UnityをGitHub管理するまでの手順でした。