【Git・GitHub操作ガイド】第2章 図解! Gitブランチ入門! 使い方をわかりやすく解説

【図解】Gitブランチ入門!使い方をわかりやすく解説

「うわ、mainブランチを直接編集しちゃった…」
「機能開発の途中で、緊急のバグ修正依頼が!」

――こんな冷や汗をかく経験、ありませんか?

Gitの「ブランチ」は、そんな開発現場の“あるある”をスマートに解決してくれる超重要機能です。
この記事を読めば、あなたもブランチを使いこなし、安全かつ効率的に作業を進められるようになります!


対象読者

本記事は、Gitの基本的なコマンド(add, commit)は覚えたけれど、チーム開発の経験がなく、ブランチの使い方がよくわからないエンジニアの方を対象としています。

mainブランチを汚さずに安全に作業したい」「コンフリクトが怖くてマージできない」といった悩みを解決し、自信を持ってブランチ操作ができるようになることを目指します。


目次


ブランチとは?開発の全体像を理解しよう

ブランチを使った、開発の流れは以下のようになります。この一連の流れは、GitHub Flowなどのモダンなブランチ戦略の基本となります。

ブランチの基本的な流れ
  1. 基準となるブランチ(例: main)から、作業用の新しいブランチを作成する。
    例:「ログイン機能開発ブランチ」「バグ修正ブランチ」など。
  2. 作成したブランチに切り替えて、作業(コミット)を進める。
    この間、mainブランチには一切影響がありません。
  3. 作業が完了したら、その成果をmainブランチに統合(マージ)する。
    これにより、mainブランチが新機能や修正が取り込まれます。
  4. 役目を終えた作業用ブランチは削除する。

このサイクルを繰り返すことで、メインのブランチを常に安定した状態に保ちながら、複数の開発を安全に進めることができるのです。


【基本編】これだけは覚えたい!ブランチ必須コマンド

1. git switch -c <name>:ブランチを作成して移動する

概要

現在のコミット位置から、新しい作業履歴の分岐点(ブランチ)を作成し、そのブランチへ一気に移動します。
git branch <name>(作成)と git switch <name>(移動)を一度にやってくれる、非常に便利なコマンドです。

メンターからのヒント
ブランチ名には feature/hotfix/ といったプレフィックスを付ける命名規則を採用すると、ブランチの目的が一目でわかりやすくなりますよ。

コマンド

利用事例

  • 新しい機能「feature/user-profile」の開発に着手する。
  • 緊急のバグ「hotfix/login-bug」を修正する必要がある。
git switch -c の流れ

実行手順

mainブランチにいることを確認してから、新しいブランチを作成・移動します。

# 'feature/add-login' という名前のブランチを作成し、そこへ移動する
git switch -c feature/add-login

実行例

コマンドの実行例:ブランチの作成と移動

your-name@your-pc project-name % git switch -c feature/add-login
Switched to a new branch 'feature/add-login'

これで、あなたはfeature/add-loginという新しい作業部屋に入ることができるようになりました。ここでのコミットはmainブランチには影響しませんので、安心して作業してください。


2. git switch <name>:ブランチを切り替える

概要

現在作業しているブランチから、別の既存ブランチへ移動します。作業部屋を移動するイメージです。

コマンド

利用事例

  • feature/add-loginでの作業を一旦中断し、mainブランチの最新の状態を確認したい。
git switchの流れ

実行手順

# mainブランチへ移動する
git switch main

# 再び作業ブランチへ戻る
git switch feature/add-login

実行例

コマンドの実行例:ブランチの作成と移動

your-name@your-pc project-name % git switch main
M README.md
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

your-name@your-pc project-name % git switch feature/add-login
M README.md
Switched to branch 'feature/add-login'

注意点

コミットしていない変更が残っている状態では、ブランチを切り替えられないことがあります。その場合は、git stashを使うか、変更をコミットしてから切り替えましょう。

stashについては以下の記事で詳しく解説しています!是非ご覧ください。


3. git merge <branch>:ブランチを統合する

概要

あるブランチで行った変更の歴史を、現在いるブランチにすべて取り込み、一つにまとめます。

コマンド

利用事例

  • feature/add-loginブランチでの開発が完了したので、その成果をmainブランチに反映させたい。
git mergeの流れ

実行手順

  1. まず、取り込み先となるブランチ(main)に移動します。
git switch main
  1. 次に、取り込みたいブランチ(feature/add-login)を指定してgit mergeを実行します。
git merge feature/add-login
  1. これでfeature/add-loginで行われたすべてのコミットがmainブランチに統合されました。
  2. 最後に、不要になった作業ブランチを削除します。
git branch -d feature/add-login

実行例

コマンドの実行例:ローカルブランチでの変更とマージ

# feature/add-loginブランチで作業し、コミットする
your-name@your-pc project-name % git switch -c feature/add-login
Switched to a new branch 'feature/add-login'
your-name@your-pc project-name %
# (ファイル編集後...)
your-name@your-pc project-name % git add README.md
your-name@your-pc project-name % git commit -m "docs: update README.md"
[feature/add-login 0a344a3] docs: update README.md
 1 file changed, 1 insertion(+)

# mainブランチへ切り替え
your-name@your-pc project-name % git switch main
Switched to branch 'main'

# mainブランチへfeature/add-loginブランチをマージ
your-name@your-pc project-name % git merge feature/add-login
Updating 462a977..0a344a3
Fast-forward<br> README.md | 1 +
 1 file changed, 1 insertion(+)

# マージされていることをgitログで確認
your-name@your-pc project-name % git log --oneline<br>0a344a3 (HEAD -> main, feature/add-login) docs: update README.md
...

# feature/add-loginブランチの削除
your-name@your-pc project-name % git branch -d feature/add-login
Deleted branch feature/add-login (was 0a344a3).

4. git merge:マージコンフリクト(競合)を解決する

概要

マージしようとした複数のブランチで、同じファイルの同じ行が別々に変更されていた場合、Gitはどちらの変更を優先すべきか判断できず、コンフリクト(競合)を報告してマージを中断します。これを解決するのは、開発者の役割です。

メンターからのヒント
コンフリクトは、複数人が同じGoogleドキュメントの同じ行を同時に編集してしまった状態に似ています。どちらの編集を残すか、あるいは両方を組み合わせるか、人が判断してあげる必要がありますよね。Gitも同じで、私たち開発者が「これが正解だよ」と教えてあげる必要があるのです。怖がらずに、一つずつ解決していきましょう!

コマンド

利用事例

マージしようとした複数のブランチで、同じファイルの同じ行が別々に変更されていたので、コンフリクトを解消してマージしたい。

git mergeコンフリクト解決の流れ

実行手順

  1. git mergeを実行すると、コンフリクトが発生した旨のメッセージが表示されます。
  2. git statusを実行すると、どのファイルでコンフリクトが発生しているか確認できます。
  3. 該当ファイルをテキストエディタで開くと、以下のような特殊なマーカーで競合箇所が示されています。
<<<<<<< HEAD
ここに現在のブランチ(main)での変更内容が表示されます。
======= ここにマージしようとしたブランチ(feature/add-login)での変更内容が表示されます。
>>>>>>> feature/add-login

これは、Gitが「どちらを採用すればいいか分からない!」と教えてくれているサインです。それぞれの部分の意味は以下の通りです。

<<<<<<< HEAD (<- ここからが、今いるブランチ(HEAD)での変更)
# My First Git?Hub Repository
======= (<- ここまでがHEADの変更。ここから下が、マージしたいブランチの変更)
# My First Git/Hub Repository
>>>>>>> feature/add-login (<- ここまでが feature/add-login ブランチの変更)
  1. 開発者はこのマーカーとコードを見比べ、最終的にどちらのコードを残すか(あるいは両方を組み合わせるか)を判断し、手動でファイルを編集します。マーカー(<<<<<<<, =======, >>>>>>>)も忘れずに削除してください。
  2. 修正が完了したら、ファイルを保存し、git addで解決したことをGitに伝えます。
git add conflicted-file.txt
  1. 最後に、git commitを実行してマージを完了させます。(コミットメッセージは自動で用意されています)

実行例

コマンドの実行例:マージでのコンフリクト

your-name@your-pc project-name % git merge feature/add-login
Auto-merging README.md<br>CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

コマンドの実行例:コンフリクトしたファイル(README.md)を編集し内容を確定

# My First Git/Hub Repository
add second line

コマンドの実行例:編集したファイルをコミット

your-name@your-pc project-name % git add README.md
your-name@your-pc project-name % git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:
  modified:   README.md

your-name@your-pc project-name % git commit
[main 6e4ce3b] Merge branch 'feature/add-login'

【発展編】知っていると便利!応用コマンド

ここまでの基本操作をマスターすれば、次はチーム開発に欠かせないプルリクエスト(Pull Request)の作成に挑戦できます。プルリクエストについては、今後の記事で詳しく解説しますね。

このセクションでは、さらに一歩進んで、知っていると便利な応用コマンドをいくつか紹介します。

5. git rebase <branch>:履歴を一直線に整える

概要

mergeが「合流」のイメージなら、rebaseは「付け替え」のイメージです。作業ブランチのコミット履歴を、指定したブランチの最新地点に移動させ、歴史を一本の綺麗な線に見せることができます。

rebaseの場合(featureブランチでgit rebase mainを実行)

実行前: mainfeatureが分岐している

git rebase beforeの流れ

実行後: featureのコミットがmainの先端に移動し、履歴が一直線になる

git rebase afterの流れ

コマンド

利用事例

  • プルリクエストを出す前に、mainブランチの最新の変更を取り込み、自分の作業ブランチの履歴を綺麗に整えたい。

注意点

GitHubなどで既に他の人と共有しているブランチに対してrebaseを実行してはいけません。 履歴を書き換える強力な操作のため、他の人の履歴と食い違い(コンフリクト)を生み出す原因となります。pushしていない個人の作業ブランチでのみ利用するのが原則です。


6. git cherry-pick <sha>:特定のコミットだけを適用する

概要

他のブランチにある、特定のコミット1つだけを「つまみ食い」して、現在のブランチにコピーするコマンドです。コミットを識別するためのID(SHA、git logで確認できる長い英数字)を指定します。

コマンド

利用事例

  • ある開発ブランチで行ったバグ修正コミットが、緊急でmainブランチにも必要になった。

cherry-pickを実行すると、以下のようにfeatureブランチにある「バグ修正」のコミットがコピーされ、mainブランチの先頭に適用されます。

git cherry-pickの流れ

実行手順

  1. まず、取り込みたいコミットのID(SHA)を、featureブランチのログで確認します。
# featureブランチに移動
git switch feature
# ログを表示
git log
# commit
5a3f8b... Author: ... <- このIDをコピーする
  1. 次に、適用先となるmainブランチに移動します。
bash git switch main
  1. git cherry-pickコマンドで、先ほどコピーしたコミットIDを指定します。
bash git cherry-pick 5a3f8b
  1. これで、mainブランチに指定したコミットだけが適用されました。

実行例

コマンドの実行例:feature/cherry-pickブランチから指定したコミットを取得

git log --onelinefeature/cherry-pickブランチ)

**your-name@your-pc project-name % git log --oneline**
**193b0cd (HEAD -> feature/cherry-pick) upd:add fifth line**
**360aefd upd:add 4th line**
**ac1b2fb upd:add 3rd line**
0a344a3 (origin/main, origin/HEAD, main) docs: update README.md
...

git cherry-pickmainブランチで実行)

**your-name@your-pc project-name % git switch main**
Switched to branch 'main'
**your-name@your-pc project-name % git cherry-pick ac1b2fb**
[main 1e0cd76] upd:add 3rd line
 Date: Mon Sep 8 18:27:00 2025 +0900
 1 file changed, 1 insertion(+)

7. git revert <sha>:コミットを打ち消す

概要

指定したコミットの変更内容を“取り消す”ための、新しいコミットを追加します。履歴からコミットを削除するのではなく、変更を上書きするので、チームで共有しているブランチでも安全に変更を元に戻すことができます。

コマンド

利用事例

  • リリースした機能に問題が見つかったため、その機能を追加したコミットを安全に取り消したい。
git revertの流れ

実行手順

  1. まず、打ち消したいコミットのID(SHA)をログで確認します。
    bash git log # commit 3c8b2d... Author: ... <- この「問題のある機能B」のIDをコピー
  2. git revertコマンドで、そのコミットIDを指定します。
    bash git revert 3c8b2d
  3. コマンドを実行すると、自動的にコミットメッセージが入力された状態でテキストエディタが開きます。内容を確認し、そのまま保存してエディタを閉じます。
  4. これで、指定したコミットの変更を打ち消す、新しいコミットが作成されました。履歴は上書きされず、安全に変更が取り消されます。

実行例

コマンドの実行例:特定のコミットを取り消す

git log --oneline(revert前)

your-name@your-pc project-name % git log --oneline
193b0cd (HEAD -> feature/revert-test) upd:add fifth line
360aefd upd:add 4th line
ac1b2fb upd:add 3rd line
...

git revertを実行

your-name@your-pc project-name % git revert 193b0cd<br>[feature/revert-test b0d07f3] Revert "upd:add fifth line"<br> 1 file changed, 1 deletion(-)

git log --oneline(revert後)

your-name@your-pc project-name % git log --oneline
b0d07f3 (HEAD -> feature/revert-test) Revert "upd:add fifth line"
193b0cd upd:add fifth line
360aefd upd:add 4th line
ac1b2fb upd:add 3rd line
...

参考資料


まとめ:ブランチを使いこなして、自信を持って開発しよう!

お疲れ様でした!この記事では、Gitブランチの基本的な考え方から、現場で必須となる以下のコマンド操作までを学びました。

  • git switch -c: 安全な作業部屋(ブランチ)を作る
  • git merge: 作業の成果を合体させる
  • コンフリクト解決: 変更の衝突を乗り越える

最初は少し難しく感じるかもしれませんが、ブランチはあなたの開発をより安全で、創造的なものにしてくれる強力な味方です。まずは恐れずに、この記事を参考にしながら、自分で練習用のブランチを作って色々と試してみてください。

「習うより慣れよ」です。失敗を恐れず、たくさんのブランチを作って、マージして、時にはコンフリクトを解決していく中で、ブランチ操作は必ずあなたの血肉となります。

次のステップ

ブランチ操作に慣れたら、次はいよいよチーム開発の花形、「プルリクエスト」の世界に飛び込んでみましょう!

記事が役に立ったら

この記事が役に立った!と感じたら、ぜひSNSでシェアしていただけると、とても嬉しいです!


本記事をご利用いただくにあたって

この記事は、公開時点(2025年9月)の情報に基づき、正確な情報を提供するよう努めています。

しかし、本記事で解説するソフトウェアやサービスの仕様は日々更新されるため、記事内で紹介している画面や手順が、ご覧いただいている時点では変更されている可能性があります。

もし内容に相違がある場合は、各サービスの最新の公式ドキュメントも併せてご参照ください。本記事の情報を利用される際は、ご自身の判断と責任においてお願いいたします。


SNSでもご購読できます。

コメントを残す

*