SourceTreeをインストールしたよ!早速プロジェクトのバージョン管理をしてみたい!
本記事の内容
・GitHubにリモートリポジトリを作成し、ローカルのプロジェクトと紐付ける方法
・ローカルのUnityのプロジェクトをリモートリポジトリへプッシュする方法
この記事は以下の関連記事(GitHub、SourceTreeのセットアップ)の続きになります。
前回のおさらい
GitHubにリモートリポジトリを作成する
まずは前回の記事の復習です。プロジェクトをバージョン管理したり、複数人で開発するには、Gitを使ってバージョン管理をするのがオススメという話でした。
今回は具体的にどうやってやるかについて解説です。新しいプロジェクトを作成し、GitHubで管理するフローをなぞってみましょう!
プロジェクトファイルをGitHubにプッシュするまでの流れは以下の通りです。
- GitHubにリモートリポジトリを作成する
- SourceTreeからリモートリポジトリとローカルリポジトリを紐付ける
- SourceTreeからコミット→プッシュする
GitHubにリモートリポジトリを作成する
まずはGitHubにリモートリポジトリを作成します。以下からGitHubのサイトに飛び、ログインします。
https://github.com/
右上の「+」ボタンを押し、New repositoryを選択します。
次にリポジトリの設定です。以下の赤枠部が重要です。
まず、Repository name。これはプロジェクトの名前を入れましょう。ゲームのタイトルと一致している必要はありません。
次に、Public or Private。
Publicにすると全世界の人間がアクセス出来てしまうので、よっぽどの事情がなければPrivateにしましょう。
最後に、Add .gitignore。
まず、ゲームプロジェクトの中には、Gitで管理する必要のない(≒前回からの差分を管理する必要がない)ファイルが沢山あります。そうしたファイルをGitの管理対象外にするために、どのファイルが管理対象外となるかを指定してくれるものです。ignoreは"無視する"という意味。
Unityで検索すると、Unityのプロジェクトに最適化された管理対象外のフォルダの一覧を勝手に作ってくれます。
セットしたら、「Create repository」を押しましょう。こんなかんじの画面になっていればOKです。
これでリポジトリを作る作業は完了です。
ただ、GitHubで行う作業はまだもう一つだけあります。後続の作業でSourceTreeからGitHubに連携する認証に必要なアクセストークンというものを発行する必要があります。(一度だけ実施)
画面右上のアイコンをクリックし、歯車マークの「Settings」を選択。
遷移した先のページの左の方に、「Developer Seettings」を選択し、「Tokens」を選択。
Generate new tokenを選択します。
「Fine-grained,repo-scoped」は、まだベータ版なので「Generate new token(classic)」の方を選択しておきます。
次の画面でNote(トークンの利用目的)、Expirateion(有効期限)、Select scopesを設定します。
Expirateion(有効期限)は、最大1年までです。
Select scopesは、特に利用したい機能がなければrepo(リポジトリ)だけでよいでしょう。
この状態で、GenerateTokenを押すと、画面が切り替わります。
表示されているトークンは、画面をリセットされると表示されなくなります!!
一度消えてしまうと再表示出来ないので必ずコピーしてテキストファイルなどに控えておきます。もし消してしまったら、先ほどのアクセストークンを作成する手順をもう一度やりましょう。
一旦これでGitHubでの作業は終了です。
SourceTreeの作業
<注>:SourceTreeはMacとWindowsで見た目やボタンの名前が違います(謎仕様)。
Windows版をベースに解説しているのでご注意ください。
次にSourceTree側の作業です。
ここではGitHubで作成したリモートリポジトリと接続するためのローカルリポジトリを作成し、Unityのワークファイルをローカルリポジトリの中にいれる、というのがやりたいことです。
GitHubとSourceTreeの紐づけ
SourceTreeを開き、ツール→オプションを選択します。
認証タブからオプションを選択。以下で設定し、OAuthトークン再読み込みを押します。
ホスティングサービス:GitHub
優先するプロトコル:HTTPS
認証:OAuth
連携が成功すると左下の「認証に成功」というチェックが付きます。
リモートリポジトリからクローンしてローカルリポジトリの作成
次に、「リモートリポジトリと接続するためのローカルリポジトリを作成」します。
そのために、先ほどGitHubで作成したリモートリポジトリをコピーし、ローカルリポジトリを作成する、「クローン」を行います。
具体的な手順です。
GitHubのリモートリポジトリのURLを取得します。「Code」ボタンからURLを取得してコピーします。
次にSourceTreeを開き、Cloneボタンを押します。
以下の画像のとおり、GitHubから取得したURL、プロジェクトファイル格納先のパスをセットします。
プロジェクトファイル格納先は、すでに存在しているプロジェクトファイルパスとは別のパスにしましょう。
(一応同じファイルパスでも可能らしいが、個人的には怖いのでオススメしない。。。)
これでローカルリポジトリが作成されました。
いまはローカルリポジトリで指定した保存先パスとリモートリポジトリが、相互にやり取り出来る状態になっています。しかし、現在のローカルリポジトリの中には、Unityで作ったプロジェクトのワークファイルがありません。
なので、Unityで作ったプロジェクトのワークファイルを、ローカルリポジトリのパスに移動させます。
以下、具体的な手順です。
まずは、Unityのすべてのプロジェクトを閉じておきます。
次に、Unityのワークファイルが格納されているフォルダ内の全ファイルを選択し、
先ほどSourceTreeから作成した、新規に作成したフォルダに移動させます。これには少し時間が掛かります。
移動が完了したら、UnityHubを開きます。
UnityHubが参照していたフォルダが変わっているので、先ほどSourceTreeで新規作成したフォルダを、「開く > ディスクから加える」で追加します。
追加後、以前のプロジェクトファイルへの参照は削除しちゃいましょう。
SourceTreeからコミット→プッシュする
SourceTreeを開きます。
すると以下のような画面になっていると思います。
最初にリモートリポジトリからプロジェクトファイルをダウンロードしてきた状態(Initial commit)から、
Gitで管理しているローカルリポジトリが変化している(Unityのワークファイルを移動させてきた)、という状態を指しています。
そこで、このUnityのワークファイルたちをリモートリポジトリに送るためには、コミットとプッシュを行います。
まずはコミットから。
コミットをするには、作業ツリーのファイルを、「全てインデックスに追加」を押します。
これで、最初の状態から変更したファイルがすべてコミット対象として認識されます。
画面下部に、コミット時のテキスト(何を変更したかのメモ)を入れる欄があるので、入力してコミットボタンを押しましょう。組織開発の場合は記載ルールがあったりますが、個人でやる分には自分が把握出来るようなテキストを入れればOKです。(例えば、日付と変更概要を書くなど)
コミットボタンを押すと自動で、画面が切り替わり、プッシュというボタンに①というアイコンが付きました。
これは、プッシュされていないコミットが1つあるよ、という意味です。
なので、最後にローカルリポジトリの内容をプッシュしたいと思います。
ただ、そのままプッシュすると、403errorと表示される可能性があります。そのため、事前にエラーを回避を仕込む必要があります。以下、具体的な手順です。
SourceTreeの右上にある設定ボタンを押します。
リモートというタブで表示されている行をダブルクリックします。
そして、ここで先ほど控えていたアクセストークンの出番です。
GitHubにあるURLと
先ほど取得したアクセストークンを使い、URL/パスを以下の名前に変更してOKを押します。
https://<token>@<git_url>.git
※アクセストークンが、ABCDE、GitHubからコピーしたURLが、github.com/hogehoge/hoge.gitだとしたら
https://ABCDE@github.com/hogehoge/hoge.git
になります。
これで、アクセストークンを使った接続になり、エラーを回避出来るはずです。
ここまで来たらあとはプッシュボタンを押すだけです!
プッシュボタンを押すと、ポップアップが出ます。リモートブランチにmain(もしくはmaster)を選択して、プッシュボタンを押します。
これで、プロジェクトのバックアップが取れました!
念のためリモートに上げたGitHubの方を見てみると、先ほどプッシュしたファイルが登録されていることが確認出来ます。
GitHub関連のTIPS・よくあるエラー
GitHubにアップロード可能なファイルは100MBが上限
GitHubにアップロード可能なファイルは100MBが上限です。
小規模なゲームであれば100MBを超えるようなファイルはあまりないと思いますが、まれにダウンロードしたアセットに100MBを超えたファイルが含まれる場合があります。
コミット時にファイルサイズが大きいアセットがあると、SourceTreeは警告を出してくれます。
警告が出た際に100MBを超えるファイルがあり、不要なファイルがあれば削除するか、圧縮する方法を検討しましょう。
ただ、どうしてもそのファイルが必要!ということであれば、Git LFSというサービスを使うとよいでしょう。
詳しくはこちらのサイトで分かりやすく解説されています。
また、万が一警告を突破して100MBを超えるアセットをコミットまでした場合、プッシュ時に一生エラーが出ます。そうなった場合はこちらのサイトの内容を参考にすると解消するでしょう。
リポジトリへアクセス可能な共同ユーザを増やす
プロジェクトを複数人で管理する場合は、それぞれにGitHubアカウントを作成してもらいます。
上部のSettingsから、「Collaborators」を選択します。
虫眼鏡マークから、ほかのユーザを検索することが出来るため、探して追加しましょう。
追加されたユーザがGitHubにログインすると、通知が来ているので、以下のような画面から招待を受け入れると共同編集が可能になります。
デフォルトブランチ名の謎(main or master)
作成したプロジェクトのブランチ(木の枝のアイコン)を見ると、mainになっていると思います。
ただ、他のサイトで紹介されている内容で、masterと表記されているものもあるので、少し混乱するかもしれません。
実は2020年頃に、デフォルトのブランチ名が、master から mainに変更されました。
古い記事の場合、masterで説明しているものもありますが、masterとmainどちらも名前が違うだけで、同じものを指していると理解してください。
(masterというワードは奴隷問題を想起させるらしいので、ネーミングが変わったとのこと)
まとめ
以上、SourceTreeを使ってGitHubにバックアップファイルを送信する方法でした。
プロジェクトのバックアップがあると、安心してプロジェクトを進めることができます。
ただ、このセットアップは、初心者からすると用語が沢山あり、エラーも出ることも多く混乱することも多いと思います。不明点などあればコメントください。
それでは素敵なゲーム制作ライフを!
コメント