タイガーラック クリエイティブブログ
2025
July
31

Gitを基地に例えると、わかりやすくなった話

はじめに

弊社では週に一度、勉強会という時間があり
クリエイティブ事業部メンバーで担当者をローテーションしています。

1月の自分の担当時に、共有も兼ねて「弊社のGit運用について」を勉強会のテーマにしました。
その時にまず、Gitの初学者のための用語説明を行うタイミングがあり
リポジトリを基地で例えると理解がしやすいかもしれないと思い、ChatGPTに例えてもらいました。

当時の資料から抜粋

◾️リポジトリ = 基地

リポジトリは、プロジェクト(作戦)の情報や資源を保管する「基地」です。この基地では、計画の詳細(コードやファイル)、その進捗(バージョン履歴)、そして変更点の記録がすべて保存されています。

  • ローカルリポジトリ: 自分のPCにある個人用の小基地。
  • リモートリポジトリ: GitHubやGitLabなどのクラウド上にある本部基地。他の仲間とも情報を共有する中心的な場所。

◾️ブランチ = 分隊

基地では、複数の分隊がそれぞれ独立した作戦(開発)を進めています。
これがブランチにあたります。

  • mainブランチ(本隊): メインの作戦を進行する部隊(リリース版コードなど)。
  • 新しいブランチ(特殊部隊): 新機能やバグ修正など、個別のミッションに取り組む分隊。

◾️コミット = 任務記録

分隊が日々進めている任務の成果を「コミット」として記録します。

  • たとえば、新しい機能を追加したり、問題を解決したら、その成果を「任務記録」として基地に報告。
  • ログを見ると、基地に送られたすべての任務記録を確認できます。

◾️プッシュ & プル = 本部との通信

  • プッシュ: 分隊が基地から本部に進捗を報告(ローカル → リモート)。
  • プル: 本部から最新の作戦情報を受け取る(リモート → ローカル)。

◾️マージ = 分隊の合流

特殊部隊(新しいブランチ)の作戦が完了したら、本隊(mainブランチ)に合流して成果を共有します。これを「マージ」と呼びます。

  • ただし、合流時に衝突(コンフリクト)が起きることもあります。たとえば、複数の分隊が同じ地図(ファイル)を変更している場合です。

◾️ステージングエリア = 荷物を集める場所

成果を記録する前に、まずステージングエリアで荷物をまとめます。
これにより、「何を報告するか」を選択できます。

  • Git add: 荷物をステージングエリアに運ぶ。
  • Git commit: 荷物を正式に記録。

◾️リポジトリを基地とした例: チーム開発

1:基地の準備: チーム全員がリモートリポジトリ(本部基地)からローカルリポジトリ(小基地)をクローンして作業開始。

2:分隊で作業: 各開発者はそれぞれのブランチ(分隊)で任務(開発)を進行。

3:プッシュで報告: 作業が進むたびに本部に成果を報告(プッシュ)。

4:マージで合流: 全員の作業をmainブランチ(本隊)に統合し、プロジェクトを進める。

    ついでに

    最低限の用語説明だと、これでうまくいってそうです。

    当時、勉強会の席ではこのまま次のセクションに進みましたが
    上記のようにリポジトリ=基地とした例えの場合で、fetchという用語はどう表現すればいいのか気になりますね。

    ChatGPTに聞いてみました。

    ◾️フェッチ(fetch)= 本部からの偵察・情報収集

    分隊がまだ報告(マージ)を受け入れる前に、本部(リモートリポジトリ)の最新情報を偵察・取得する動きです。
    ただし、この時点では自分の地図(作業ブランチ)は更新しません。あくまで「情報を集めて手元で確認」している段階です。

    • git fetch: 本部に「何か新しい動きがあったかな?」と偵察に行き、更新情報だけを持ち帰ってくる。
    • 実際の作業地図(ブランチ)を更新するには、その後 merge や rebase を行う必要があります。

    まとめ

    ChatGPTかしこいですね。


    このカテゴリの最新記事

    関連記事

    SHOP LIST

    タイガーラック株式会社

    〒577-0056
    大阪府東大阪市長堂1-3-14 TOKUYASU Bld.