# バージョン管理ツール「git」

gitを使用し、大事に作ったプロジェクトのバックアップしましょう。

# バージョン管理システム

 バージョン管理システム（Version Control System - VCS）はコンピュータ上でファイルの変更履歴を管理するシステムです。

 現在、ゲームを作成している際にミスをした場合、数回アンドゥ（元に戻す）操作を行って戻ることができます。しかし、これはプログラムを起動し続けている間のみ有効です。Unityを一度閉じて後で再起動した場合、それまでに行った変更を取り消すことはできません。

 さらに、誤ってファイルを削除してしまうこともあるでしょう。この場合、ファイルは失われてしまい、一から作り直すしか選択肢がありません。

 バージョン管理システムは、プロジェクトに加えた変更を記録し続ける仕組みです。これにより、タイムラインに登録した任意の時点まで、いつでも戻ることができます。

 また、バージョン管理システムはクラウドと連携して、作業のオンラインコピーを作成することができます。コンピューターが故障した場合でも、常にバックアップがあるため作業を復元できます。さらに、クラウドサーバーに残したコピーから作業を継続することで、別のコンピューターからでも作業が可能です。これにより、自宅でも学校でも同じプロジェクトで作業することができます！

 バージョン管理システムは共同作業（複数の人が同じプロジェクトで作業すること）も可能にしますが、この応用については来年学習します。

 今のところ、どのようなツールがあるかを見てみましょう：

- Mercurial：使いやすい無料ツールですが、最近は使用頻度が減っています。
- Git：人気のあるツールです。同じく無料で、Mercurialよりも少し使いにくいですが、非常に強力です。
- Perforce：通常ゲーム会社で使用されており、大きくて重いファイル（画像、テクスチャ、音声、メッシュ）の変更も記録でき、チーム開発により特化しています。Perforceは有料ソリューションなので、大企業のプロジェクトで見つけることがあるでしょう。

 このコースではGitの使い方を学習します。ただし、多くの概念は他のバージョン管理システムでも使用できます。

### ダウンロードとインストール

 Windows で git を使うために「git for Windows」のインストールしなければならない。

[https://gitforwindows.org/](https://gitforwindows.org/)

 ただし、git はコマンドライン（各操作をキーボードで打ち込む）のソフトなので、初心者にとって使いにくい。少し楽にするため、マウスで使える Windows のインタフェースがたくさんある。今回は、フリー、オープンソースの「GitExtensions」をおすすめする。

[https://gitextensions.github.io/](https://gitextensions.github.io/)

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/TGrimage.png)

# Gitの操作の流れ

## よく使うコマンド

### 履歴に「チェックポイント」を追加

#### コマンド：git commit

 バージョン管理システムは、いつ作業のチェックポイントを作成すべきかを自動的に判断できないため、変更を保存したいタイミングを自分で指示する必要があります。バージョン管理システムに変更を保存したいと伝えると、システムは前回の登録以降に変更されたすべての内容を含むチェックポイントを作成します。

 必要に応じて、後からこれらのチェックポイントのいずれかに戻ることができます。そのため、通常は小さな機能を実装した後やバグを修正した後など、頻繁にチェックポイントを作成することが望ましいです。

 例えば、ゲームのキャラクターのジャンプ機能の実装が完了した後に1つのチェックポイントを作成し、次に走る速度の修正が終わった後に別のチェックポイントを作成し、さらにダメージ計算の実装後に別のチェックポイントを作成する、といった具合です。

 Gitでは、これらのチェックポイントの一つ一つを「コミット（commit）」と呼びます。各コミットには、担当者の名前、変更された日時、そして何が変更されたかという情報が含まれています。

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/w2Kimage.png)**コミットする瞬間に、履歴に１つのチェックポイントができる**

### 履歴をクラウドにアップロード

#### コマンド：git push

 作業中に行うコミットはすべて、作業中のコンピューター内にのみ保存されます。このローカル履歴を使用して、変更を元に戻したり、過去の状態に戻ったりすることができますが、コンピューターが故障した場合、結局すべてのファイルを失ってしまいます。

 これを防ぐために、履歴をクラウドにバックアップすることが重要です。このために、Gitは「プッシュ（push）」という機能を提供しており、現在の履歴をウェブサーバーにコピーします。

 これにより、コンピューターがクラッシュした場合でも、ウェブサーバーから履歴を復元することができます。また、別のコンピューターで作業を続けたい場合にも利用できます。例えば、クラウドを橋渡しとして使用し、プロジェクトファイルの最新コピーを保管することで、自宅と学校のコンピューター間で作業を切り替えることができます。

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/EHiimage.png)**プッシュ前：ローカル履歴にいくつかのコミットが溜まっている**

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/ZhIimage.png)**プッシュ後：クラウドの履歴を同期し、ローカル統一させる**

#### 履歴のデータベース：「リポジトリ」

 「リポジトリ」はあくまで専の門用語です。変更履歴のデータベースのことです。「ローカル」と「リモート」の2種類があります。「ローカル」は、作業のPCの中にあります（コミットするところ）。「リモート」はクラウドにあるものです（プッシュとプルするところ）

### クラウドから履歴をダウンロード

#### コマンド：git pull

 コンピューターが故障して、クラウドからファイルを復元する必要があるとしましょう。または、自宅でいくつかのファイルを編集して、今度は学校で作業を続けたいとします。そのためには、クラウドサーバーから最新の変更をダウンロードする必要があります。これを行うために、Gitには「プル（pull）」コマンドがあり、作業コンピューターとクラウドの間で何が異なるかをチェックし、変更された部分のみをダウンロードします。

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/4tBimage.png)**逆に、クラウドにコミットがあれば…**

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/YRNimage.png)**「プル」で作業パソコン（ローカル）にダウンロードできる**

### クラウドを活用して、どこでも開発（使用例）  


① まず、学校で作業をはじめ、クラウドにプッシュ

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/4NGimage.png)

② 自宅で継続したいので、クラウドからプルし…

[![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/hUximage.png)](https://class.illogic.games/uploads/images/gallery/2026-06/hUximage.png)

③ 新しい機能を追加。その後、またクラウドにプッシュ

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/CgOimage.png)

④ そしたら、学校でプルし、継続できる

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/tYNimage.png)

#### 注意しないといけない点：コンフリクト  


 「pull」を使用する際に注意すべき点の一つは、「コンフリクト（conflict）」が発生する可能性があることです。コンフリクトは、ローカルとリモートの両方で、同じファイルに対して変更が行われた場合に発生します。

 以下、コンフリクトが発生する流れを示します：

③ 新しい機能を追加。その後、またクラウドにプッシュ

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/CgOimage.png)

④ ただ、自宅の作業をプルし忘れて、そのままでPlayerMoveを編集してしまった！

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/mUWimage.png)

⑤ プルしようとしたら、学校でも、自宅でも同じファイルを編集したので、コンフリクトが発生

[![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/dl3image.png)](https://class.illogic.games/uploads/images/gallery/2026-06/dl3image.png)

 通常、一人で作業している場合はコンフリクトが発生するリスクはそれほど高くありませんが、複数の人が同じプロジェクトで作業する場合には確実に問題となります。コンフリクトについては、来年のグループプロジェクトで再度詳しく説明します。

## 使う頻度が少ないコマンド

これで、ほぼ毎日の作業ができます！ただし、時々以下のコマンドも必要です：

### 何もない状態から履歴をパソコンにダウンロード

#### コマンド：git clone

 学校のコンピューターで作業を行ったとしましょう。変更をクラウドにプッシュして、今度は自宅に帰って自分のコンピューターで作業を続けたいとします。

 しかし、まだ自分のコンピューターでは作業を始めていません。なので、サーバーからすべてのファイルをダウンロードすることになります。変更分だけでなく、リポジトリ全体をダウンロードしなければなりません。このため「クローン（clone）」というコマンドがあります。

 clone は初回のみ実行し、後は普通通り、commit、push、pullで作業すれば結構です。

### 作業を分岐する

#### コマンド：git branch

 Gitで行えるもう一つの機能として、ブランチ（branch）の作成があります。ブランチを使用することで、プログラマーは異なる機能を並行して実装したり、同じプロジェクトの異なるバージョンを作成したりすることができます。

 ブランチとマージ（merge）については、来年のグループプロジェクトで詳しく学習します。

### 余計な、不要なファイルを無視する

#### コマンド：なし

 作業するプロジェクトによっては、プロジェクトの履歴から除外したいファイルがあります。良い例として一時ファイルがあります（Unityの場合、通常はLibraryフォルダやTempフォルダです）。これらの一時ファイルがあると、実際に何が変更されたかを把握するのが困難になり、クラウドへのファイルアップロードのプッシュ処理も遅くなってしまいます。

 「.gitignore」という名前の特別なファイルを追加することで、特定のファイルを無視するようにGitに指示することができます。このファイルはテキストファイルで、プロジェクトで追跡したくないすべてのフォルダとファイルの名前が記載されています。

 独自の「.gitignore」ファイルを作成することもできますし、特定のプロジェクト用に準備されたファイルをダウンロードすることもできます。例えば、Unityプロジェクト用の「.gitignore」ファイルはこちらで見つけることができます：

[https://github.com/github/gitignore/blob/main/Unity.gitignore](https://github.com/github/gitignore/blob/main/Unity.gitignore)

# Githubとは

 GitHubは、無料のリモートリポジトリを提供するオンラインサービスです。GitHubを使用することで、プロジェクトのオンラインコピーを保管し、自宅で作業を続けることができたり、コンピューターが故障した場合のバックアップとして利用したりできます。

 GitHubの利用は無料ですが、ファイルサイズに制限があります。アップロードできるファイルは最大100MBまでです。それより大きなファイルをアップロードしたい場合は、Git LFS（large file system）に月額料金を支払って登録する必要があります。

 次に、実際にGitHubアカウントを作成し、これまで学習したコマンドをいくつか練習してみましょう。

 [https://github.com/](https://github.com/) を開き、「GitHubに登録」を押してください。

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/Ql0image.png)

<span style="text-decoration:underline;">**学校のメールを使うのか？個人の使うのか？**</span>

GitHubは一生使えるアカウントなので、<span style="color:rgb(186,55,42);">**卒業後にも続けて開発するつもり**</span>なら、<span style="color:rgb(186,55,42);">**個人メールアドレス**</span>の方がおすすめする。学校のメールアドレスが卒業後に使えなくなるので、GitHubのアクセスができなくなる。

一方、開発ではなく、**<span style="color:rgb(35,111,161);">ゲーム企画や別の企業を検討している学生は、</span>**<span style="color:rgb(35,111,161);">**どちらにしてもOK**</span>。ただし、卒業前にGitHubのアカウントを廃止するのはおすすめ。

Googleアカウントを持っていれば、同じアカウントでログインできるので、良かったらお使いください。

![image.png](https://class.illogic.games/uploads/images/gallery/2026-06/scaled-1680-/G04image.png)