週刊SleepNel新聞

SleepNel所属のぽうひろが日々の個人開発で気になったことを綴ります。

SourceTreeを使ってUnityプロジェクトをgitで管理してみよう!

みなさん、こんにちは。ぽうひろです。

みなさん、Unityで開発をしていてプロジェクトが壊れてしまった!!
間違ってファイル削除してしまった! この修正やっぱやめたいけど、もうどうやってたか忘れた・・・
などの経験はないでしょうか?

そこでオススメしたいのが「Unityプロジェクトをgitに登録する」ことです!

よくわからないし敷居が高い、、、と思っている方も意外といるのではないかと思い、
ここで簡単な手順を残しておきたいと思います。
ご参考になれば幸いです。

まず下準備として、gitとSourceTreeというgitをGUIで操作できるソフトをインストールしておきましょう。

gitは以下の記事のhomebrewを利用してインストールしておくと良いです。
Gitではじめるバージョン管理 〜Gitをインストール for Mac OS X〜

SourceTreeはこちらから
SourceTree - Windows と Mac 対応 Git & Mercurial 無料クライアント | Atlassian


ここでは、使用PC:Macで、すでにUnityプロジェクトがある状態からの手順を書きたいと思います。
f:id:pouhiroshi:20161218151956p:plain
まず、cd で管理したいUnityプロジェクトの直下に遷移します。
そこでgit init というコマンドを実行します。

そして、SourceTreeで新規リポジトリを選び、既存のローカルリポジトリを選択し、先ほどのgit initしたディレクトリを選択します。
f:id:pouhiroshi:20161218153136p:plain

すると、先ほどのプロジェクトが出てくるようになります^^
f:id:pouhiroshi:20161218153720p:plain

さて、gitで有名なのは先ほどのSourceTreeを作っているAtlassianのBitBucket。
あとはgithubですね。
ここではgithubの例を書いていきますが、初めは無料で始められるBitBucketをお勧めします。

このYour Repositoriesの「New Repository」ボタンを押します
f:id:pouhiroshi:20161218154411p:plain

リポジトリ名を入れて、公開したくないのであれば「Private」にしてCreate RepositoryすればOK
f:id:pouhiroshi:20161218154449p:plain


リポジトリを作成すると固有のURLが発行されます。これをコピーしておきます。
f:id:pouhiroshi:20161218154536p:plain

SourceTreeの設定でURLに先ほどのURLを入力すれば連携完了です。
f:id:pouhiroshi:20161218154618p:plain

連携できるとこんな感じになると思います。
f:id:pouhiroshi:20161218154731p:plain



それではここからは、ソースをコミットする例を順を追って説明します。
まず、この状態ですが?となっていますが、これはまだgitにファイルが登録されていないことを意味しています。
gitはローカルとリモートで2段階保存のようなイメージになっており、わかりやすく言いますと、
まずローカルに保存(コミット)、それをリモートに保存(プッシュ)という感じになっています。
gitについての正しい知識は毒きのこさんのエントリーを是非ご覧ください!
tech.librastudio.co.jp


ファイルの横にあるチェックボックスにチェックすると、Indexにステージされた状態になります。(コミットのさらに1つ前の段階って感じですかね)
すると、下にコミットコメントを入力する欄が出てきますので、何かメモを残すと良いです。
f:id:pouhiroshi:20161218155241p:plain

コミットを直ちにプッシュするチェックをすると、コミットと同時にプッシュまでできます。
f:id:pouhiroshi:20161218155304p:plain
これでgitに保存が完了したことになります!

ところで、Unityプロジェクトをgit管理する時は、以下の内容を.gitignoreというファイル名で
コミットプッシュしておくと、余計なファイルを登録しなくて済むようになります。
このファイルは何を意味しているかというと、gitでこういう名前のファイルは管理しないよ(無視する)という指定をするためのファイルです。
Unityはtmpファイルなどを大量に作るのでそれらまで管理すると、大変になるので無視してしまった方が良いです。
.gitignore

/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/Assets/AssetStoreTools*
/TPS_cache/*

# Autogenerated VS/MD solution and project files
ExportedObj/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj

# Unity3D generated meta files
*.pidb.meta

# Unity3D Generated File On Crash Reports
sysinfo.txt
=======
*.svd

# Unity3D generated meta files
*.pidb.meta

# Unity3D Generated File On Crash Reports
sysinfo.txt

# Builds
*.apk
*.unitypackage


さて、次は何かプログラムを修正してみます。
f:id:pouhiroshi:20161218155338p:plain

修正した後、SourceTreeを見てみると、黄色いアイコンで修正したプログラムが表示されています。
右には差分がbefore,after表示されていますね!
f:id:pouhiroshi:20161218155352p:plain

さて、この修正。やっぱ、やーめたっていうことがgitで管理しているとできます。
ファイル名の上で右クリックして、メニューを表示し、「リセット」を選びます。
f:id:pouhiroshi:20161218155413p:plain

確認ダイアログが出ますのでOKを押します。
f:id:pouhiroshi:20161218155500p:plain

ほら、もとどおり!
f:id:pouhiroshi:20161218155526p:plain

次は、ファイルを間違えて削除してしまったとしましょう!
削除は-アイコンで表示されます。これもリセットで戻せます。
f:id:pouhiroshi:20161218155604p:plain

またファイル名の上で右クリックして、メニューを表示し、「リセット」を選びます。
f:id:pouhiroshi:20161218155624p:plain

確認ダイアログが出るのでOKを押します。
f:id:pouhiroshi:20161218155640p:plain

これで削除したファイルも元に戻ります!!

今回の例はコミット・プッシュしていないファイルをリセットで戻せるよという例でしたが、
コミット・プッシュしてしまうと、元に戻すのはそれなりの手順が入りますので、またの機会に・・・・w

あまり時間がなくて、雑な説明になっていますので、
落ち着いたらもう少し丁寧&詳細に書いてみたいと思います。

それでは良い開発ライフを!!