UnityでGitHubとSourceTreeを導入する時にハマった所

GitHubから逃げてきたけどとうとう導入しました。

railsをちょろっとやった時に、ちょっと勉強したけどコマンドばっかりで良くわからないし、「まあ、個人開発じゃ使わなくていいでしょ！」と勝手に思って1年以上放置していた。

個人開発とはいえ、ちょっと前の状態に戻したいとか、良くわからないアセットをインポートしたらなんか動かなくなった。
とかは良く発生していた。

今まではDropboxの巻き戻し機能で戻していた。
けど、ファイル名が変更時間帯でババーっと並ぶだけで、これ何の変更なの？とか全然わからないから、一部のファイルだけ元に戻すとか怖くてできない。
開発が長くなってきた時に、機能の変更履歴とかもチェックできたら良さそうだし。

ということで導入過程でハマったことをまとめてみます。
##環境など
Mac book pro 2018
macOS Catalina
Unity 2019.4.1f
SourceTree 4.1.0

##SourceTreeを使うことに

前に触った時にコマンドだけで操作するのは自分には無理だ、と思ったので画面を見ながら操作できるGitクライアントなるものを導入することにしました。

色々種類はあるようなのですが、一番使われているらしく、ぱっと見の印象で簡単そうだったSourceTreeを使うことにしました。


他にもGithub for DesktopとかGithub for unityとかでもできそうでした。

単なるバックアップだけならUnityのCollaborate機能でもできるっぽいです。
自分はUnity内の機能で、Unityのプロジェクトをバックアップするのが何となく不安だったので、SourceTreeにしました。


導入はひとまず下記の記事を参考に進めました。
https://blog.naichilab.com/entry/unity-github

ここからは自分がハマったところを書いていきます。大まかな流れやSoucetreeのインストールは上記の記事を参考にしてください。

##プルするリモートのブランチにmasterが出てこない。

.gitignoreプルしようとした時に「プルするリモートのブランチ」の部分にmasterが出てこないという現象に遭遇。
更新ボタンを押しても出てこない。


![スクリーンショット 2021-03-12 18.43.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682050/895dfd9f-bd8c-90eb-1d0e-a77a15d661db.png)


ここでやりたかったことは、.gitignoreというバックアップしないファイルのリストを、github上からローカルのリポジトリに反映させたいということです。

Unityは一時的なファイルとかをたくさん作ってしまうのですが、.gitignoreはそういう余計なデータをバックアップしないようにするためのリストみたいなものです。

で、Github上でプロジェクトを作った時に、Add.gitignoreの項目をUnityにしておくと、予め.gitignoreをunity用に作成しておいてくれるんですが、それをプルしようした時に起きました。

##Githubのアカウントと、SourceTreeを連携する。

結局原因は良くわからないのですが、どうやら一回もmasterにプッシュしていないから起きたようです。
ということでとりあえず何かのデータをコミットとプッシュしてみると、何やらエラーが起きました。
スクショし忘れたんですが、
Authentication〜みたいなエラーで、Githubアカウントに接続できないと言われました。
Githubアカウントと連携しろよ、みたいなものだと解釈。

https://community.atlassian.com/t5/Sourcetree-questions/Getting-quot-fatal-Authentication-failed-for-quot-error/qaq-p/624663

GithubのアカウントからSetting画面に行き、Applications→Authorized OAuth Appsに行き、
Soucetree For Macが表示されているか確認します。

![スクリーンショット 2021-03-12 20.09.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682050/0a0ec6f1-849e-430b-0648-c3939eb02cb7.png)


自分は最初は、上記の画面にSoucetree For Macが表示されてませんでした。これを連携するためには

Sourcetreeの環境設定→アカウント→追加
ホストをGitHubに変更し、アカウントを接続を押すとブラウザー画面でGithubが開き、連携しますか的なことを聞かれるのでパスワードを入力して連携。
![スクリーンショット 2021-03-12 20.34.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682050/469ff820-29f3-dbd6-2c05-f2ce688243a4.png)


https://qiita.com/suzutatsu/items/817f58cfb6e69f56d134

これで連携は完了。

##sshキーを設定
上記でプッシュできるかと思いきや、またもやエラーが
sshキーが間違ってるぜ！、的なことを言われる。

対処法はSSHキーを設定すること。
再び、環境設定→アカウントに行き、先ほど連携したアカウントを選択肢、[編集]
キーを生成を押すとSSHキーが作成されるので、クリップボードコピーを押してコピーする。

次にブラウザからGithubの画面に行き、Setting　→　SSH & GPG keys　→　ADD new SSH key　

SourceTreeで先ほどコピーしたキーを[key]の部分にペースト。
タイトルは適当に。
![スクリーンショット 2021-03-12 20.45.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682050/39208a8c-ff37-6658-fffc-122e9ebf59b1.png)


あとはリモートリポジトリのパスをSSHのものに変更する。
ブラウザからGithubのプロジェクトに行き、　右側の緑色の↓Code　ボタンを押し、タブをSSHに変更し、URLをコピーする
![スクリーンショット 2021-03-12 20.55.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682050/da5debec-bca6-4e45-9090-02b99cddfdb4.png)


SourceTreeの方に戻って　[設定]　→[リモート]　→　[編集]　にてリモートリポジトリのパスを編集

![スクリーンショット 2021-03-12 20.49.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682050/46874f70-dfe4-82e1-8dbb-d142c5f23cfe.png)

URLの部分に先ほどコピーしたGithubのsshのパスをコピーしてOK


##.gitignoreをSourceTreeから編集
＜参考＞
http://negi-lab.blog.jp/archives/sourcetreeunity.html

前述の通り、Github上にはUnity用の.gitignoreを作ってくれているのですが、最初のプッシュの前にはプルすることができなかったので、手動で直します。

SourceTreeの該当のローカルリポジトリを開き、[設定]　→　[高度な設定]　を押す。
リポジトリ限定無視リストの右側の編集ボタンを押すと、.gitignoreのファイルを編集できます。

あとはGithub上で自動で作ってくれた.gitignoreのファイルの中に書いてあるリストをそのままコピーして、貼り付け。
xを押せば反映される。

これでローカルリポジトリのMasterの横↓の数字が変更前より減っていればOK。
![スクリーンショット 2021-03-12 21.06.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682050/374aa8e8-a3f0-7ba1-a5aa-c9c928d03c5f.png)


これでUnityのデータをGithub上にコミットするときは、プッシュできるようになりました。

コミットするときは、ファイルステータスからコミットしたいファイルを選択してからメッセージを書いてコミット。

![スクリーンショット 2021-03-12 21.10.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682050/11932c21-ebd4-d4f7-f609-62ffbfa3ec56.png)

コミット時にメッセージ横にある、「□コミットを直ちにプッシュする」、にチェックを入れると、すぐにプッシュされるらしい。


プッシュするときは、左上のプッシュのボタンを押す。