SourceTreeでGitHubを使う

# 概要
macosでGitHubを使おうとすると、基本はIDE（統合開発環境）にGit連携機能があり、それを経由してリモート先としてGitHubにPushしたりするわけですが、Unityを使うと、どうもこのGitHub連携部分がなくて困った。

そこで、SourceTreeでGitHub操作をすることを整理してみる

ざっと流れを記載すると
* SourceTreeを入手する
* Github（Private）のリストを表示する
* Github（Private）にローカルのプロジェクトをリポジトリ追加する

# GitHubのパスワード認証は廃止された
ご存知の方は多いだろう。
GitHubは2021/8にIDとパスワードを用いたパスワード認証が廃止された。
https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/

この廃止によって、意外にGitHub連携に関して記述してある記事も使えなくなっていたりする。
（パスワード認証だと書いているわけではないが、当時は一般的だったので、、、）

本記事は、この**パスワード認証が廃止されたことが前提**で進める。

# 前提環境
* macos 12.2.1（Monterey）
* Githubのアカウント所持
* macosにGitインストール済み

# 手順
## SourceTreeを入手する
まずは、SourceTreeを入手します。
https://www.sourcetreeapp.com/

インストールしたいPCでアクセスすれば、自動的に適切なOSのDownloadボタンが表示されるので、そのままダウンロードします。

*Sourcetree_4.1.6_242.zip

## SourceTreeをインストールする
DownloadしたZipを解凍すると、「Sourcetree.app」が入手されるので、これをアプリケーションフォルダに移動させます。

## ローカル内のGit管理プロジェクトを検出する
アプリケーションフォルダに移動させた「Sourcetree.app」を起動します。

* 右下の「続行」をクリックします。
![スクリーンショット 2022-02-22 23.15.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/da192841-8cd7-658a-18af-70fca0d826dc.png)

* 「GitとMercurialのグローバル作成者の詳細を設定する」にチェックを入れます。
作成者名には、公開用の名前を入れます。（要はなんでもいい）
作成者のメールアドレスには、自分のメールアドレスを入れます。（どんなメアドでもいい）
右下の「完了」ボタンをクリックします。
![スクリーンショット 2022-02-22 23.16.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/c938d116-f70d-dff7-a83e-3a70f80b2fa3.png)

* ひとまずSourceTreeを起動しました。
![スクリーンショット 2022-02-22 23.17.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/019b3bc8-c84c-f389-8f98-e42c6a9e2b20.png)

* つづいて、「ローカル」のタブをクリックします。
すでに、どこかのフォルダをGitのローカルリポジトリとして設定しているなら、そこでもいいですし、簡単なのは自分のユーザーフォルダを「ディレクトリスキャン」から選択するのが簡単でいいです。
![スクリーンショット 2022-02-22 23.22.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/521b0b85-ca16-14ea-fdca-9f823103cd46.png)

* ローカル側のGitプロジェクトが列挙される
（自分が認識していたプロジェクト以外に列挙される驚き。あ、昔作ってたわ・・・みたいな）
![スクリーンショット 2022-02-22 23.25.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/2a47648b-d609-171a-57e8-89eab8b24e93.png)

## リモート（GitHub）の登録リストを表示する
続いて、GitHub側のリポジトリを列挙してみます。
自分のGitHubアカウントにサインインしてみます。

* GitHubにサインインします。
「リポジトリをフィルタ」の右側にある「・・・」ボタンをクリックして、「アカウント」を選択します。
![スクリーンショット 2022-02-22 23.29.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/b2c9acf3-bc74-3c80-136b-dd53e450e621.png)

* GitHubアカウントを設定します。
左下の「追加」ボタンをクリックします。
![スクリーンショット 2022-02-22 23.31.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/d1b10ca5-e91d-4f7f-0cab-4faa089174b7.png)

* 下記の状態にまずは選択を変更します
![スクリーンショット 2022-02-22 23.33.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/1c837fc4-d7c1-3bd4-7c43-eee27c3fd649.png)

* 「ユーザー名」には、GitHubのユーザーIDを入力します。
「パスワード」には、GitHubのアカウントパスワードではなく・・・・・Tokenを入力します。

Tokenってなに？と思う人は、下記をみてね。

* GitHubのPrivateリポジトリも列挙される
![スクリーンショット 2022-02-22 23.50.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/86e7b911-1352-149d-91d4-7f5cfdfa9244.png)

## ローカルプロジェクトをローカルリポジトリに追加する
ローカルリポジトリ（Git）に追加するなら、下記から行います。
![スクリーンショット 2022-02-23 0.02.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/a0b7729f-5f13-6528-6689-edaf9cb2fdd4.png)

## ローカルリポジトリのプロジェクトをリモートリポジトリ（GitHub）に追加する
<font color="red">**★SourceTreeからGitHubに新規リポジトリ作成はできません！**</font>

つまり、何が言いたいかというと、下記のようなことができません。
* ローカルのリポジトリ一覧からGitHubへ追加するものを選択します。
![スクリーンショット 2022-02-23 0.05.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/bb26ce5c-8df3-f152-27e3-3fb82a5051b4.png)
* 右クリックして「リモートに公開...」を選択します。
![スクリーンショット 2022-02-23 0.07.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/937b651a-b18a-77ff-b63e-45640a0ee896.png)

上記のように追加しようとすると、下記のエラーとなります。
エラーとしては、リポジトリが見つからない。ということなのですが、EclipseやAndroid Studioではできるローカルからリモートへの最初のコミット＆プッシュがリモートへのリポジトリ作成をついでにやってくれる。という機能がないようです。

てっきり、Token作成時の権限の問題かと思ったのですが、そうではないようです。

では、どうするのか？というと、先にGitHub側でリポジトリを作成して、それをローカルにクローンします。
空のリポジトリがクローンされるので、そこにプッシュするファイルをコピーして、それを再度SourceTreeでローカルリポジトリとして認識させて、リモートにプッシュするようなことをします。

現状、Unityが、この方法をとらないといけないようなので、別途UnityプロジェクトをGitHubへ登録する記事を書いて補完しようと思います。

![スクリーンショット 2022-02-23 2.22.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/8abdd642-33b4-0a6d-fd13-31870d48551b.png)


# GitHubのToken
まずは、GitHub（https://github.com/ ）のWebにサインインします。
画面右上から「Setting」を選択し、「Developer settings」を選択します。
そして、「Personal access tokens」を選択します。

![スクリーンショット 2022-02-22 23.36.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/2af7dc4c-4b31-f881-679b-f34e626a811e.png)

Tokenを作成していない場合は、Tokenを作成します。
「Generate new Token」ボタンをクリックしてTokenを作成します。
![スクリーンショット 2022-02-22 23.42.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222251/b67d8051-3ef1-fbaf-e29c-adb3e66b664e.png)

Note欄は、複数のTokenを作成した際に区別するためのものなので、適当な名前をつけてください。
自分の場合は、PC別でTokenを使い分けているので、PC名にしてます。

Expirationは、無期限だとちょっと問題なので「９０days」ぐらいで良いです。
期限が切れたら、また更新してください。

あとは、必要な権限にチェックをつけます。
参考までにandroid studio用に作成したもので下記を見てください。
https://qiita.com/TAKANEKOMACHI/items/0101f0ff88fad2696e81