Zenn
🎮

初心者のためのバージョン管理用語集

2025/03/26に公開

初めに

ゲームやシステムの開発において、データ管理は極めて重要な役割を果たします。
そのため、バージョン管理について知識を深めていきましょう。

バージョン管理

バージョン管理とは、ファイルやプロジェクトに加えられた変更を、「いつ、誰が、どのように行ったのか」を記録・追跡する仕組みです。
これにより、過去の状態に戻せるため、誤った変更を取り消したり、前のバージョンと比較することができます。また、複数人での開発においても、誰がどの部分を変更したのかを把握できるため、作業の衝突を防ぎながらスムーズに進めることができます。
バージョン管理は手作業でも行えますが、人為的なミス(ヒューマンエラー)が発生しやすく、誤って古いファイルを使ったり、重要な変更を上書きしてしまうリスクがあります。そのため、多くの開発現場では 「Git」 というツールを活用しています。

リポジトリ(Repository)

ファイルやプロジェクト、設定情報などを管理・保存する「保管場所」です。特に開発の現場では、ソースコードや関連するファイルをまとめて管理するために利用されます。

バージョン管理を活用すると、「ローカルリポジトリ」と「リモートリポジトリ」という言葉をよく耳にすると思います。それぞれの役割を理解しておくと、スムーズに会話できるようになるので少しずつ覚えていきましょう。

【リモートリポジトリ】

クラウド上やネットワーク上にあるリポジトリで、複数人と共有できる「保管庫」のようなものです。他のメンバーが変更した内容を確認したり、自分の変更を反映させるために利用されます。

【ローカルリポジトリ】

自分のPC環境にあるリポジトリで、ファイルの変更や新規追加を行う場所です。作業中のファイルはまずローカルリポジトリに保存されます。

コミット(Commit)

新規で作成したファイルや、既存のファイルを編集して変更した内容を保存することを指します。

★ゲーム開発に例えると、新しいギミックを追加したり、バグを修正したりした際に、途中経過をセーブするような役割を果たします。また、問題が発生した場合でも、進捗を失わずに作業前の状態に戻すことができるため、安全に開発を進めることができます。

プッシュ(Push)

ローカルで作業した内容をリモートリポジトリに反映させる操作です。
コミット(ローカルでの保存)をオンラインのリポジトリにアップロードすることにより、他の開発者がその変更をリモートリポジトリから取得(プル)することができるようになります。

プル(Pull)

リモートリポジトリにある最新の状態を、自分のローカルリポジトリに取り込む操作です。
他の人が行った変更を取り込むことで、最新の状態を確認できます。

ブランチ(Branch)

チームでプロジェクトを進める際、現在の状態から新たな変更を始めるために使います。具体的には、プロジェクトの進行方向を変えずに、新規実装やバグ修正などの作業を行う場所として利用されます。
ブランチを作成することで、元のプロジェクトから「枝分かれ」して作業ができ、変更を試す際に本流のプロジェクトに影響を与える心配がありません。

【ローカルブランチ】

自身のコンピュータ内にあるブランチで、実際に作業を行う場所です。
新しい機能を開発する際やバグを修正する際には、まずローカルブランチを作成し、その上で作業を進めます。

【リモートブランチ】

クラウド上にあるリモートリポジトリ内のブランチで、他の開発者とプロジェクトを共有し、協力するための場所です。多くの場合、リモートブランチは「origin/master」のように表記されます。

「origin/master」 = リモートブランチ
「master」 = ローカルブランチ

※厳密には少し異なりますが、一般的にはこのように覚えても問題ありません。

例えば、リモートブランチ「origin/master」に他の開発者が変更をプッシュした場合、そのリモートブランチは新しいコミット位置に更新されます。しかし、ローカルブランチ「master」は自動的には更新されません。そのため、ブランチを切る前に必ず最新の状態にする必要があります。

ブランチに関するその他の呼び方
  1. ブランチを作成する。
    新しいブランチを作成する操作です。
  2. ブランチを開始する
    新しいブランチでの作業を始めることです。
  3. ブランチを切り替える
    既存のブランチAから別のブランチBに移動する操作です。
    これを「チェックアウト」や「スイッチ」と呼ぶこともあります。

マージ(merge)

複数のブランチからの変更を取り込み、一つのブランチに統合する操作です。

例えば、ハンバーグを作る際に、世界中のレシピから手順やアイデアを組み合わせて新しい料理を作り出すように、マージは異なるブランチ(変更)を組み合わせて一つにまとめる作業です。これにより、複数の開発者が行った変更や新しい機能が一つのブランチに形成されます。これが、まさに「ハンバーグ」です。

コンフリクト(conflict)

マージ操作中に発生するエラーで、現在進行中のプロジェクトデータと、コミットされているデータAおよびデータBの3つの異なるバージョンが同じ場所(.cppや.hファイルなど)を変更または追加した場合に起こります。

コンフリクトは、共有データで発生すると、修正することが難しくなる場合があるため、発生すると非常に厄介です。そのため、コンフリクトが発生しないように意識することが予防していきましょう!

フェッチ (Fetch)

リモートリポジトリから最新の変更情報を取得する操作です。
フェッチは、リモートリポジトリの状態をローカルに反映させるだけで、実際にローカルの作業ブランチには変更が加わりません。よく使われる場面では、リモートブランチを削除した際の更新や、他のコミットの確認などがあります。
そのため、フェッチ後に必要に応じて、マージ (Merge) を行って、ローカルブランチを更新することをお勧めします。

リバート (Revert)

過去のコミットを取り消す操作です。特定のコミットが問題を引き起こした場合や、誤って変更を行った場合に使用します。リバートを実行すると、選択したコミットの変更を取り消す新しいコミットが作成されます。これにより、コミット履歴が変更されずに問題を解決できます。
既存のコミットを無効にするためのコマンドです。これは、「取り消したいコミットを打ち消し新しいコミットを作成する」という機能です。これによって、過去のコミットを修正します。

★ポイント
新しいコミットが作成されるだけで、既存のコミットは削除されません。コミットログにはリバート操作が記録され、何が変更されたかが確認できるようになります。リモートリポジトリにプッシュされているコミットにも安全に使用できます。

スタッシュ(Stash)

ブランチAで作業をしている際に、急にブランチBに切り替えたくなることがあるかと思います。その際に使える便利な機能が『スタッシュ (Stash)』です。

例えば、ゲーム開発をしていると、タイトルの演出作成をしている最中に、主人公に致命的なバグが発生した場合など、タイトルの作業をコミットせずに一時的に置いて、急遽別の作業に移りたい場合に使います。スタッシュは、未コミットの変更を一時的に避難させ、他の作業に集中するための便利な機能です。

よくあること。

作業を始める際に、ブランチを切り替えるのを忘れてそのまま作業を進めてしまうことがあります。その結果、コミットしようとした時に「間違ったブランチで作業していた」と気づくことがよくあります。

また、作業中にコミットできない状態で別のブランチで作業を進めなければならない場合にも発生します。こうした場合、変更したファイルを一時的に別の場所に移動させて、後から上書きして解決することができます。このような変更は比較的小さな手間で済みますが、もし別のブランチで同じ箇所を修正していた場合、コードの整合性を取るために確認や調整が必要になることがあります。

最後に

バージョン管理は、チーム開発や個人作業において効率的に作業を進めるための重要なツールです。基本的な操作を覚え、チームとのコミュニケーションを大切にすることで、スムーズな開発が可能になります。この記事で紹介した内容を実践し、バージョン管理を活用してより良い開発環境を作りましょう。

慌てて作成したため、イメージがつかみにくい部分があるかもしれません。その場合は、メッセージやXのDMでお気軽にご連絡いただければ幸いです。

参考サイト

●Git以外のバージョン管理ツールを知りたい方へ
https://qiita.com/CinnamonSea2073/items/9cbe06fb34ec40917075

Discussion

ログインするとコメントできます