スキップしてメイン コンテンツに移動

【Day 11】ポインタとしてのブランチと切り替え(branch / switch)

Git & GitHub 超入門 Day 11
👨‍🏫
皆さん、こんにちは! 本講座の専任講師です。
いよいよ本日より「第3部:ブランチ・マージ・リベースの基礎」へと突入します!
Subversion (SVN) や Visual SourceSafe (VSS) を長年使ってきたエンジニアにとって、「ブランチを切る」という行為は一大プロジェクトでした。「サーバー上で /branches 配下にギガバイト級のディレクトリを丸ごと物理コピーし、時間がかかり、サーバー容量を圧迫し、あとでマージするときにリビジョン範囲指定で頭を抱える……」そんな苦い思い出がある方も多いはずです。
そのため、「ブランチはリリース直前など、よほどの理由がない限り切ってはいけない禁断の技」と思い込んでいませんか?
しかしGitの世界では、その常識が180度覆ります。Gitのブランチは、作成するのに0.01秒しかかかりません! ディスク容量もほぼゼロです!
本日は第11回として、なぜGitのブランチはこれほど超軽量なのかという内部構造(40バイトのポインタ)の秘密を解き明かし、Git 2.23以降の新標準コマンド git switch による安全な切り替え、TortoiseGitでのGUI操作、そして現代のAIエージェントを活用した並行開発作法まで、徹底的にわかりやすく解説します!

① 導入・本日の達成目標

GitをGitたらしめている最大の強み、それこそが「超軽量でコストゼロのブランチ(Branch)」です。
日常のあらゆる小さな修正、新機能の実験、バグ調査のたびに気軽にブランチを作り、用が済んだら統合してサッと捨てる。この軽快なブランチ運用を身につけることが、現代のソフトウェア開発スピードを手に入れる第一歩となります。

本日の講義でマスターするゴールは以下の3点です!

  • なぜGitのブランチは一瞬で作れるのか? SVNの物理ディレクトリコピーとの決定的な違いと内部構造(コミットを指すポインタ)を理解する。
  • Git 2.23+ 新標準コマンド git switch と git branch の実践操作をマスターし、旧来の git checkout から卒業する。
  • TortoiseGitでの直感操作と、AIエージェント(Antigravity / Claude Code等)に安全に機能実装させるためのブランチ指示作法を習得する。

② 【徹底比較】SVNの物理コピー vs Gitの40バイトポインタ

SVN出身のエンジニアが最初に最も驚くのが、「ブランチ作成のコスト」の違いです。

SVNのブランチ vs Gitのブランチ 徹底比較
▲ 【図解①】SVNのディレクトリ物理コピー vs Gitの40バイトポインタ

両者のアーキテクチャの違いを比較表で確認してみましょう:

比較項目 SVN(集中型) Git(分散型)
ブランチの実体 /branches 配下のディレクトリ丸ごとコピー コミットID(SHA-1)を書いたたった40バイトのテキストファイル
作成にかかる時間 数十秒〜数分(サーバー通信とファイル数に依存) 約0.01秒(一瞬!)
ディスク消費量 プロジェクト容量分を消費(重い) ほぼゼロ(40バイトのみ)
開発者の心理 「重いしマージが大変だから、なるべく作りたくない」 「機能単位やバグ1つごとに気軽に作って使い捨てる!」

③ 【内部構造】ブランチの正体と「HEAD」の役割

「40バイトのポインタに過ぎない」とはどういうことでしょうか? Gitリポジトリの内部(.git フォルダの中)を覗いてみると、そのカラクリが一発で分かります。

ブランチとHEADポインタの関係
▲ 【図解②】ブランチの正体と『HEAD』による現在地追跡の仕組み

リポジトリの .git/refs/heads/main というファイルを開いてみると、そこには以下のような40文字のコミットハッシュが1行書かれているだけです:

# .git/refs/heads/main の中身
3a8f1b29d45e7890123456789abcdef012345678

つまり、ブランチとは「特定のコミットを指し示す付箋(名札・ポインタ)」に過ぎません! 新しいブランチを作成するとは、単にこの40文字のテキストファイルを1個作るだけの操作なのです。だからこそ、ファイルが何万件あろうと一瞬で作成できます。

💡 特別なポインタ「HEAD」とは?
Gitにはもう一つ、超重要なポインタがあります。それが HEAD(ヘッド) です。
HEADは「今自分がどのブランチで作業しているか(現在地)」を指し示す看板です。
.git/HEAD を開くと、通常は ref: refs/heads/main のように、「mainブランチを見ているよ」という参照先が書かれています。
ブランチを切り替える(switchする)と、HEADの看板が別のブランチ名へと掛け替えられ、作業ツリーのファイルがそのブランチの最新コミット状態へと自動で展開されます。

④ 【コマンド実践】Git 2.23+ 新標準 git switch をマスターする

古いGitの入門書では、ブランチの切り替えに git checkout が使われていました。
しかしDay 10でも触れたとおり、旧来の git checkout は「ブランチの切り替え」と「作業ファイルの破棄」という全く異なる危険な操作を同一のコマンドで兼ねており、初心者の誤爆事故が絶えませんでした。
そこで Git 2.23(2019年)以降、機能が明確に2つに分離されました:

  • git restore : 作業ファイルの変更を取り消す(復元する)
  • git switch : ブランチを切り替える

現在では、ブランチ操作には git switch を使うのが絶対の新標準です!

実務で毎日使うブランチ操作コマンド 5選

# 1. ローカルのブランチ一覧を確認(現在いるブランチに * が付きます)
$ git branch
* main

# 2. 新しいブランチを作成する(まだ移動はしません)
$ git branch feature/order-api

# 3. 指定したブランチに切り替える(HEADが移動)
$ git switch feature/order-api
Switched to branch 'feature/order-api'

# 4. 【超頻出!】ブランチ作成と切り替えを1撃で同時に行う(-c = create)
$ git switch -c feature/order-api
Switched to a new branch 'feature/order-api'

# 5. 直前にいたブランチに一瞬で戻る(ショートハンド)
$ git switch -

⑤ 【C#現場のリアル】新機能開発用ブランチでのC#コントローラー追加

ASP.NET Core Web API プロジェクトで「注文管理機能(OrderController)」を新設する現場シナリオを考えてみましょう。
もし main ブランチで直接コーディングを始めてしまうと、途中で「本番環境で緊急バグが見つかったから大至急直してリリースして!」と頼まれたとき、作りかけの未完成コードが邪魔をして身動きが取れなくなってしまいます。

🚀 実務ワークフロー:機能ブランチ(Feature Branch)を切る

  1. 最新の main から git switch -c feature/order-controller で新機能ブランチを分岐。
  2. Visual Studio で Controllers/OrderController.cs を新規作成し、注文作成エンドポイントを実装。
  3. 動作確認を行い、git add & git commit -m "feat: 注文コントローラーを追加" でコミット。
  4. もし緊急修正が入ったら、一旦コミットした上で git switch main で本番環境の安全な状態に瞬時に復帰可能!

ブランチを git switch main と git switch feature/order-controller で往復すると、Visual Studioのソリューションエクスプローラー上で OrderController.cs が自動的に現れたり消えたりするのが確認できます。これがGitの作業ツリー同期の威力です!

⑥ 【GUI編】TortoiseGitでのブランチ作成と切り替え

Windowsエクスプローラー上でマウス操作で開発を進めるエンジニアのために、TortoiseGitでの操作手順も確認しておきましょう。

TortoiseGitでのブランチ作成と切り替え
▲ 【図解③】TortoiseGitを使った直感的なブランチ分岐と切り替え操作
📌 TortoiseGitでの操作ステップ:
  1. プロジェクトフォルダの何もない場所で右クリック →「TortoiseGit」→「ブランチの作成(B)...」を選択。
  2. ダイアログが表示されたら、「ブランチ」欄に作成したい名前(例: feature/order-api)を入力。
  3. 一番下にある「✔ 新規ブランチに切り替える(Switch to new branch)」にチェックを入れて[OK]をクリック!
  4. 既存の別ブランチに移動したいときは、右クリック →「TortoiseGit」→「切り替え/チェックアウト(S)...」を選び、移動先ブランチを指定するだけです。

⑦ 【AI時代の新常識】AIエージェントへのブランチ指示と安全な並行開発

現代のソフトウェア開発現場では、Antigravity や Claude Code、Cursor、GitHub Copilot Workspace といった「自律型AIエージェント」に大規模なコード改修を依頼することが日常化しています。

AIエージェントへのブランチ指示と安全な並行開発
▲ 【図解④】AIエージェント時代に必須となる『機能ブランチ(Feature Branch)』運用

AIエージェントにコードを書かせるときに、絶対にやってはいけない禁忌があります。
それは、「安定版の main ブランチでいきなり直接作業させること」です!

🤖 AIエージェントに作業依頼するときの黄金プロンプト

AIにタスクを振る際は、必ず「専用ブランチを切ってから作業する」指示を組み込みましょう:

「新機能として OrderController.cs を実装してください。
ただし、事前に feature/ai-order-controller ブランチを新規作成して切り替えた上で作業を行い、完成後にコミットしてください。」

専用ブランチで作業させれば、もしAIの生成結果が気に入らなかったりビルドエラーが頻発した場合でも、そのブランチごと丸ごと削除してしまえばメインコードには1ミリも影響が出ません!
「ブランチは安価な実験場である」というGitの思想こそが、AI共生時代の最大の防波堤なのです。

⑧ 📌 本日のまとめ・理解したい最重要ポイント

第11回の講義、お疲れ様でした! 本日の最重要ポイントを振り返りましょう。

  • Gitのブランチは40バイトのポインタ: SVNのようなディレクトリ物理コピーとは異なり、作成速度は0.01秒、ディスク消費はほぼゼロ。
  • HEADは現在地マーカー: いま自分がどのブランチを見ているかを追跡する特別な参照ポインタ。
  • 切り替えの新標準は git switch: 旧来の多機能すぎた checkout から安全に役割分離。同時作成・移動は git switch -c <branch>。
  • AI時代のセーフティネット: AIへの改修依頼や実験的コーディングは必ず機能ブランチを切り、mainブランチの清浄性を守る!
次回【Day 12】は、「C#コードのマージ(Fast-Forward vs 3-Way Merge)〜ブランチの安全な合流〜」をお届けします! 分岐したコードをいよいよメインラインに統合する仕組みと、SVNとの違いを徹底解剖します。お楽しみに!

コメント

このブログの人気の投稿

【Perfume】Perfume 3rd Tour 「JPN」さいたまスーパーアリーナに行って参りました~

Perfume 3rd Tour 「JPN」1月28日、29日の2daysで参戦して参りました。 ファンクラブ会員の選考抽選会に28日、29日の両日で申し込んでいたんですが、両方とも当選していたという嬉しい誤算。 仕事だぁ、なんだかんだと紆余曲折ありまして28日の参戦は危ぶまれていたのですが、なんとかかんとか28日は40分遅刻しながらも参戦、29日はフル参戦する事が出来ました(∩´∀`)∩

Perfume、2025年末で“コールドスリープ(活動休止)”へ──東京ドーム2daysの記録と、公式・各界・ファンの声

  1) 公式発表・基本情報 活動休止(コールドスリープ)を正式発表 2025年9月21日、公式サイト「 Perfumeより 」で、2026年から一度コールドスリープに入ると発表。再始動の意思(“新しいPerfume”として戻る)も明記。 Perfume Official Site 今後の運用告知(配信・上映など) 同21日付の「 今後のPerfumeに関して 」で、9/23(火・祝)東京ドーム公演の LIVESHIP全世界生配信 および 全国ディレイビューイング 決定を案内。特設サイトも併記。 Perfume Official Site +1 公式グッズ **「Perfume Calendar 2026」**発売決定(B2壁掛け/表紙+2カ月1枚×6枚+ポスター)。テーマは“フルーツ”。 Perfume Official Site 2) 東京ドーム2days(9/22・23)要点 公演タイトル: ZO/Z5 Anniversary “ネビュラロマンス” Episode TOKYO DOME 。日程・開場/開演・会場・物販等の実務情報は特設で公開。 Perfume Official Site 9/23公演を世界配信(LIVESHIP) /ディレイビューイング実施。 Perfume Official Site 海外向け報道(英語)も「 indefinite hiatus 」として広く配信。 The Times of India 国内英字メディアも速報。 朝日新聞 3) 現地レポ( メリ爺 )から見える空気 あなたの現地記録(9/24公開)を、ファクトと現場情景の両面で反映: 両日参戦 。22日は アリーナ 、23日は 1階席から俯瞰 。前日の発表を受け、開演前のザワつき→MC後に“いつもの一体感”へ。開演は22日 18:45 頃。オープニングは**P³ツアー東京ドーム(2020/2)**と同趣向で“回収”の演出。 メリ爺のゲーム万歳 MC所感 :解散ではなく前向きな休止で不安を和らげる内容。 かしゆか の涙、 のっち の気丈さ、 あ〜ちゃん の思い出語り──3人の結束と「 また戻る 」約束が強く刻まれた。 メリ爺のゲーム万歳 体感時間 : “3時間弱”級のボリューム ながら“過去一...

ニンテンドースイッチでオンラインゲームを遊ぶには?

モンスターハンターライズが発売になって、家族でモンハン楽しみたい人が増えたみたいですね。 某ブログの検索キーワードを調べると、モンハンを家族でやるにはどうしたらいいのか?を調べている人が沢山いるのがわかります。 ※これでも一部  家族で協力するにはSwitch2台、ソフトも2つ購入する必要があります。 1台のスイッチでは遊べませんし、ソフト1つでも遊べません。 でも、1台のスイッチで別々アカウントがあれば交代で遊ぶこともできますよ。セーブデータもしっかり分かれます。 Switchのオンラインゲームを家族で遊ぶ方法については以下の記事にまとめてますのでよろしければ参考にしてみてくださいね。 家族でモンスターハンターライズDL版のオンラインプレーを楽しむ方法