Gitを使い始めると、早い段階で登場するのが「branch(ブランチ)」です。
branchを使うと、現在動いているコードを保ったまま、機能追加や修正を別の作業線で進められます。GitHubを使った開発では、mainを直接編集するのではなく、作業ごとにbranchを作成し、確認後にmainへ統合する流れが基本になります。
この記事では、branchの考え方から、作成・切り替え・一覧・削除までを実際のGitコマンドとともに整理します。
Gitのbranchとは
Gitのbranchは、コミット履歴上の特定のコミットを指す「名前付きの参照」と考えると理解しやすくなります。
たとえばmainが現在の安定した状態を指しているとき、そこからfeature-exampleというbranchを作ると、同じ地点から別の作業を開始できます。そのbranch上で新しくcommitしても、mainが指している位置は動きません。
つまりbranchは、ファイル一式を丸ごと複製する仕組みではありません。Gitが管理しているコミット履歴の中に、別の進行方向を作る仕組みです。
なぜmainを直接変更しないのか
mainを直接編集してcommitし続けること自体はGitの仕様上可能です。しかし、実務では作業用branchを分ける方が安全です。
主な理由は次の通りです。
- 安定しているmainと作業途中の変更を分離できる
- 複数の変更を別々に進められる
- 不要になった試行をbranchごと破棄しやすい
- Pull Requestで変更内容を確認してから統合できる
- 「何のための変更か」をbranch単位で追跡しやすい
branchは単なるGitコマンドではなく、「安定版」と「作業中」を分離するための変更管理単位として使うと効果的です。
現在のbranchを確認する
まず、現在どのbranchにいるか確認します。
git branch
現在のbranchには*が付きます。
現在のbranch名だけを確認したい場合は、次のコマンドも使えます。
git branch --show-current
作業開始前に現在位置を確認する習慣を付けると、誤ったbranchへのcommitを防ぎやすくなります。
新しいbranchを作成して切り替える
現在の位置からfeature-exampleというbranchを作成し、そのbranchへ切り替えるには次のようにします。
git switch -c feature-example
-cは--createの短縮形です。
Git公式ドキュメントでは、この操作は次の2コマンドに相当すると説明されています。
git branch feature-example
git switch feature-example
新しいbranchを作った直後にそこで作業を始めるなら、git switch -cの方が意図が明確です。
既存のbranchへ切り替える
すでに存在するbranchへ移動するときは次のようにします。
git switch feature-example
mainへ戻る場合は次の通りです。
git switch main
直前にいたbranchへ戻る場合は、次の短縮形も利用できます。
git switch -
branch上で変更をcommitする
branchを切り替えたら、通常どおりファイルを変更します。
変更状態を確認します。
git status
変更をステージします。
git add .
commitします。
git commit -m "Add example feature"
このcommitは現在のbranchを進めます。mainへ戻って確認すると、mainはbranch作成時の位置に残っています。
これがbranchによる作業分離の基本です。
branch一覧を確認する
ローカルbranchの一覧は次のコマンドで確認できます。
git branch
ローカルとremote-tracking branchをまとめて確認する場合は次のようにします。
git branch -a
作業中に「今どのbranchが存在するか分からない」となったら、まずgit branchとgit statusを確認すると状況を整理しやすくなります。
branchを削除する
不要になったローカルbranchは次のように削除できます。
git branch -d feature-example
-dは安全側の削除です。Gitは、削除しようとしているbranchの変更が適切に統合されていない場合に削除を拒否することがあります。
強制削除には-Dがあります。
git branch -D feature-example
ただし、未統合の作業を失う可能性があるため、初心者のうちは理由なく-Dを使わない方が安全です。
git switchとgit checkoutの違い
以前からGitを使っている資料では、branch切り替えに次のコマンドがよく登場します。
git checkout feature-example
新規branchの作成と切り替えには次の形式もあります。
git checkout -b feature-example
git checkoutはbranch切り替えだけでなく、ファイルを別の状態へ復元する用途も持っています。一方、git switchはbranchの切り替えを主目的としたコマンドです。
これから基本操作を覚える場合は、branchの作成・切り替えにはgit switchを使うと操作意図を読み取りやすくなります。
未commitの変更がある状態での切り替えに注意する
branchを切り替える前には、必ず次を確認する習慣を付けます。
git status
Gitは、branch切り替えによってローカル変更が失われる場合には通常その操作を中止します。しかし、「未commitなら必ず切り替えられない」という意味ではありません。変更内容と切り替え先の状態によっては、未commitの変更を保持したまま切り替えられる場合があります。
したがって、安全な運用ルールとしては「branchを切り替える前にgit statusで状態を理解する」とするのが重要です。
初心者向けの安全なbranch作業フロー
小さな変更なら、次の流れを基本形にできます。
git switch main
git status
git switch -c feature-example
# ファイルを編集
git status
git add .
git commit -m "Add example feature"
git status
GitHubへ送る場合は、この後にbranchをpushします。
git push -u origin feature-example
その後、GitHub上でPull Requestを作成し、変更内容を確認してmainへ統合する流れにつなげられます。
よくある失敗
mainにいることに気付かず編集する
作業開始前にgit branch --show-currentまたはgit statusを確認します。
branchを作っただけで切り替わったと思う
git branch feature-example
これはbranchを作成しますが、そのbranchへは切り替えません。作成と切り替えを同時に行うならgit switch -c feature-exampleを使います。
作業branchを削除する前に統合状態を確認しない
まずgit branch --mergedなどで統合状況を確認できます。通常の削除ではgit branch -dを優先し、強制削除は意図を理解している場合だけ使用します。
branch名だけで作業目的が分からない
test1やnewではなく、変更内容が推測できる名前を付けると履歴を追いやすくなります。
例:
feature/add-search
fix/calculation-error
docs/update-readme
チームに命名規則がある場合は、その規則を優先します。
まとめ
Gitのbranchは、安定したmainを維持しながら変更を別の作業線で進めるための基本機能です。
最初に覚える操作は多くありません。
git branch
git switch -c feature-example
git switch main
git branch -d feature-example
重要なのはコマンドを暗記することよりも、「現在どのbranchにいるか」「どの変更をどこへcommitしようとしているか」を常に確認することです。
git statusとbranch確認を習慣化し、mainから作業branchを作成して変更する流れを身につけると、次のmergeやPull Requestも理解しやすくなります。
参考資料
- Git公式: https://git-scm.com/docs/git-switch
- Git公式: https://git-scm.com/docs/git-branch
- Git User Manual: https://git-scm.com/docs/user-manual

