そういうのがいいブログ

アプリ個人開発 まるブログ

アプリ開発覚え書き

【Unity】プロジェクトのバージョン管理をする方法2 -基本操作- Git GitHub SourceTree 

はじめに

前回の記事で初期設定まで完了しました。

marumaro7.hatenablog.com

今回は下記の利用シチュエーションへの対応メモになります。

利用シチュエーション
・進捗の保存(コミット)
・特定のコミットまでのコミットを消す(ハードリセット)
・コミットを切り替える(チェックアウト)
・特定のコミット内容をなかったことにする(リバート)
GitHubにアップロード(プッシュ)

進捗の保存 (コミット)

進捗を保存する方法です。
任意のタイミングでコミットをしていくだけです。
実際にやってみます。

Unityでプロジェクトを開いてCubeオブジェクトを設置し保存しました。
その後、Unityを閉じます。


Unityを閉じ、SourceTreeで対象のリポジトリを開くと次のように変更点が表示されます。


全部のファイルを選択し、「コミット」を押すことで
今回のUnity側での変更を保存することができます。
コメントは「Cube追加」としました。


履歴を確認すると今回のコミットが一番上に表示されています。

特定のコミットまでのコミットを消す(ハードリセット)

不具合発生時などに
過去のコミットしたところまでプロジェクトを戻す方法です。

先程のプロジェクトをUnityで開き、「Plane」を追加しました。


ではここからPlaneが設置される前(先ほどコミットした状態)に戻していきます。
SourceTreeの履歴のところでいうと「Cube追加」の状態になります。


履歴から戻りたいコミットを選択し右クリック
「masterをこのコミットまで戻す」を押します。


現在のデータは残すのかを聞かれます。
コミット後のデータは不要なため「Hard」を選択して「OK」を押します。


作業中のデータが消えますよ〜の警告ウインドウが出ますので
「OK」を押します。


履歴の画面の最上部に表示されていた
「Uncommitted changes」の文字が消え、
グラフ列の白丸が「cube追加」のコミットにずれています。

<追記>
最上部の「Uncommitted changes」の文字が消えない場合は
一旦コミットしてから戻りたいコミットで
「masterをこのコミットまで戻す」を実施すると処理できました。


プロジェクトを開くと、
先ほど追加したPlaneが消えてコミットした時点までプロジェクトが戻ります。

複数のコミットをまたがって遡る場合、
途中に存在するコミットが消えてしまうため
慎重に操作を実施する必要があります。

コミット内容を確認する場合は、下記の「コミットの切り替え」を実施することで可能です。


コミットの切り替え(チェックアウト)

特定のコミットの状態へ切り替える方法になります。
不具合の原因特定に役立てられます。

説明をわかりやすくするため
Cubeを増やしたプロジェクト内容のコミットを用意しておきます。

Cubeを新たに3つ配置し、Unityを保存して閉じます。


Cubeを コミット後、履歴を確認すると画像のようになります。


履歴の画面から切り替えたいコミットを選択し 右クリック→「チェックアウト」を選択します。


→「OK」を押します。


白い丸が「Cube追加」のコミットに移動しました。


Unityを開くとCubeを一つだけ配置したコミットに戻っていることが確認できます。


再度チェックアウトを実施し、先頭のコミットに切り替えてみます。


白い丸が「Cubeを3つ追加」に移動したことがわかります。


Unityを開くとコミットが切り替えられていることが確認できました。


このようにチェックアウトを実施することで
特定のコミットの状態に切り替えることが可能です。


コミットしていないデータがある場合、
チェックアウト後、

「ローカルの変更を破棄」にチェックをつけてOKを押すことで切り替え可能です。
(チェックをつけないと競合しているというエラーがでます。)


実行後、コミットしていないデータが消され、切り替わります。


特定のコミット内容をなかったことにする(リバート)

あまり使わない気がしますので、メモ書き程度に残しておきます。
特定のコミット内容をなかったことにする処理です。

「Cubeを3つ追加」のコミットが反映されている状態から実施していきます。

AScriptという名前のスクリプトを追加したとします。
保存してUnityを閉じます。


「AScript追加」というコメントでコミットします。


BScriptという名前のスクリプトを追加 保存してUnityを閉じます。


「BScript追加」というコメントでコミットします。


この状態の時にAScriptを除いたコミットを作成する方法です。
「AScript追加」のコミットを選択し、右クリック→「コミット適用前に戻す」を選択


確認画面は「OK」を選択


処理が完了すると AScriptのコミット内容が除かれた新しいコミットが作成されます。

Unityで開くと、AScriptがなくなっていることがわかります。

このように特定のコミット内容をなかったことにするのが今回の処理内容となります。

注意
なかったことにできるのは、シーンに直接紐づいていないコミットになります。
オブジェクトを追加したりスクリプトの割り当てといった
シーンの中身を変化させるコミットの場合はエラーが発生し、新しいコミットは作成されませんでした。

そのため、あまりこの内容は使う場面はないのかなと考えています。


GitHubにアップロード(プッシュ)

PC破損リスクヘッジとプロジェクト使い回しのため
特定のコミットをGitHubのリモートリポジトリに送信します。
前回の記事で実施していますが改めて書きます。

画面上部のプッシュを実施します。


「OK」


処理が完了すると「origin/master」が最後のコミットへ移動します。


GitHubの該当リポジトリにて、
masterタブに切り替えてみると「Revert "AScript追加"」のコミットが反映されています。

おわりに

基本は適宜コミットをしてたまにGitHubへアップロードしていく使い方になりそうですね。

ひとつでも得るものがありましたら幸いです。

本出版しました

marumaro7.hatenablog.com