Gitでブランチ(branch)を作成したいけど、コマンドの種類が多くてどれを使えばよいか迷っていませんか。ブランチの作成方法は複数あり、状況に応じて使い分けることによって、開発効率が大きく変わります。
この記事では、Gitのブランチ作成に使う主要コマンドの一覧から、ローカルブランチ・リモートブランチの作成手順、実務で役立つ命名規則やトラブルシューティングまで網羅的に解説しています。初心者の方でもコマンドをコピペしてすぐに使える内容になっているので、ぜひ最後までご覧ください。
目次
- Gitのブランチ作成コマンド一覧
- Gitでブランチを作成する基本的な方法
- git branchコマンドでブランチを作成する手順
- git checkout -bでブランチを作成する手順
- git switch -cでブランチを作成する手順
- Gitで特定のコミットやタグからブランチを作成する方法
- コミットハッシュを指定してブランチを作成する手順
- タグを指定してブランチを作成する手順
- Gitでリモートブランチを元にローカルブランチを作成する方法
- リモートブランチからローカルブランチを作成する手順
- 作成したローカルブランチをリモートにプッシュする手順
- Gitのブランチ作成で知っておきたい命名規則
- ブランチ名に使用できる文字の制約
- 実務で使われるブランチ命名パターン
- Gitのブランチ作成時によくあるエラーと対処法
- 「already exists」エラーの対処法
- 「未コミットの変更がある」エラーの対処法
- 「not a valid branch name」エラーの対処法
- Gitのブランチ(branch)作成に関するよくある質問
- 間違った名前でブランチを作成した場合はどうすればよいですか?
- 不要になったブランチを削除するにはどうすればよいですか?
- リモートブランチを元にローカルブランチを作成する最短コマンドは何ですか?
Gitのブランチ作成コマンド一覧
Gitでブランチを作成するコマンドは主に3種類あり、それぞれ「作成のみ」「作成と切り替えを同時に行う」という違いがあります。以下の表で各コマンドの特徴を確認してください。
| コマンド | 動作 | 備考 |
|---|---|---|
git branch ブランチ名 |
作成のみ | 一覧確認時にも使用 |
git checkout -b ブランチ名 |
作成+切り替え | 従来の定番 |
git switch -c ブランチ名 |
作成+切り替え | Git 2.23以降で利用可 |
git switchはGit 2.23でcheckoutの機能をより明確にする目的で追加されたコマンドです。ブランチ操作に特化しており、公式ドキュメントでも用途を分離するためにswitch/restoreの利用が案内されています。ただしcheckoutが廃止予定というわけではなく、どちらのコマンドも引き続き使用できます。
If you want to create a new branch, you may want to use "git switch -c" to create and switch to the new branch in a single step.
Gitでブランチを作成する基本的な方法
ここでは、ブランチ作成で特によく使う代表的な3つの方法を取り上げます。それぞれのコマンドの使い方と動作の違いを順番に見ていきましょう。
git branchコマンドでブランチを作成する手順
git branchコマンドにブランチ名を指定すると、現在のHEAD(作業中のブランチが指しているコミット)を起点として新しいブランチが作成されます。ただし、このコマンドはブランチの切り替えは行いませんので、作成後に別途切り替え操作が必要です。
git branch feature/login
上記を実行すると、feature/loginという名前のブランチが作成されます。git branchを引数なしで実行すれば、ブランチが正しく作成されたかどうかを確認できます。現在チェックアウトしているブランチにはアスタリスク(*)が表示されるため、まだ元のブランチにいることがわかるでしょう。
Note that this will create the new branch, but it will not switch the working tree to it; use "git switch <new-branch>" to switch to the new branch.
git checkout -bでブランチを作成する手順
git checkout -bはブランチの作成と切り替えを1回のコマンドで実行できるため、長年にわたって多くの開発者に使われてきた方法です。新しい機能開発やバグ修正を始めるときに、すぐにそのブランチで作業を開始したい場合に適しています。
git checkout -b feature/login
実行後は自動的にfeature/loginブランチに切り替わるため、そのままファイルの編集やコミットを行えます。現在は前述のgit switch -cも広く使われていますが、既存のスクリプトやチーム内の慣習でcheckout -bが利用される場面も多くあります。
git switch -cでブランチを作成する手順
git switch -cはGit 2.23で追加されたブランチ操作専用のコマンドです。-cは--createの短縮形で、git checkout -bと同じくブランチの作成と切り替えを同時に実行します。
git switch -c feature/login
動作結果はgit checkout -bと同一ですが、git switchはブランチ切り替えに機能が限定されているため、意図しないファイル復元などの操作を避けやすくなります。Git 2.23以上を使用している環境であれば、こちらのコマンドを優先的に使用するとよいでしょう。
Gitで特定のコミットやタグからブランチを作成する方法
現在のHEADだけではなく、過去のコミットやタグを起点にブランチを作成するケースもあります。リリース済みのバージョンに対する修正や、特定時点からの機能開発を行うときに活用できます。
コミットハッシュを指定してブランチを作成する手順
コミットハッシュとは、各コミットを一意に識別する英数字の文字列です。git logで対象コミットのハッシュを確認し、ブランチ作成時に起点として指定します。
# コミット履歴を確認する
git log --oneline
# 出力例:
# a1b2c3d 3つ目のコミット
# e4f5g6h 2つ目のコミット
# i7j8k9l 1つ目のコミット
# 特定のコミットからブランチを作成する
git switch -c hotfix/urgent-fix e4f5g6h
ハッシュは全40文字ですが、リポジトリ内で一意に特定できれば先頭の7文字程度でも指定可能です。上記の例ではe4f5g6hのコミットを起点としてhotfix/urgent-fixブランチが作成され、自動的にそのブランチへ切り替わります。
タグを指定してブランチを作成する手順
タグとは、リリースバージョンなど重要なコミットに付ける目印のことです。git tagで付与したタグ名をブランチ作成時に指定することによって、そのタグが指すコミットを起点としたブランチを作成できます。
# タグの一覧を確認する
git tag
# 出力例:
# v1.0.0
# v1.1.0
# v2.0.0
# タグを起点にブランチを作成する
git switch -c hotfix/v1.1-patch v1.1.0
上記を実行すると、v1.1.0タグが指すコミットからhotfix/v1.1-patchブランチが作成されます。本番環境で稼働しているバージョンに緊急修正を加える場合など、リリースタグからブランチを切る運用は実務でも頻繁に行われています。
Gitでリモートブランチを元にローカルブランチを作成する方法
チーム開発では、他のメンバーがリモートリポジトリにプッシュしたブランチを自分のローカル環境に取り込んで作業する場面が多くあります。リモートブランチを元にローカルブランチを作成し、リモートへプッシュするまでの手順を解説します。
リモートブランチからローカルブランチを作成する手順
まずgit fetchでリモートリポジトリの最新情報を取得し、その後リモートブランチを起点にローカルブランチを作成します。git fetchとは、リモートリポジトリの変更をダウンロードするコマンドで、ローカルの作業内容には影響を与えません。
# リモートの最新情報を取得する
git fetch origin
# リモートと同名のローカルブランチを作成して切り替える(推奨)
git switch feature/payment
# 明示的にリモートブランチを起点にする場合
git switch -c feature/payment origin/feature/payment
リモートリポジトリに同名のブランチが1つだけ存在する場合、git switch feature/paymentと実行するだけでGitが自動的にリモート追跡ブランチ(リモートリポジトリ上のブランチの状態をローカルに記録した参照)を起点にローカルブランチを作成し、追跡関係(トラッキング)も設定してくれます。
同名のリモートブランチが複数のリモートに存在する場合や、ローカルブランチ名を変えたい場合は-cオプションで明示的に起点を指定してください。なお、トラッキングの自動設定はGitの設定値branch.autoSetupMergeにも依存するため、自動設定されない場合は後述のプッシュ時に-uオプションで手動設定します。
When a local branch is started off a remote-tracking branch, Git sets up the branch so that git pull will appropriately merge from the remote-tracking branch. This behavior may be changed via the global branch.autoSetupMerge configuration flag.
— Git公式ドキュメント - git-branch
作成したローカルブランチをリモートにプッシュする手順
ローカルで新しく作成したブランチをチームメンバーと共有するには、リモートリポジトリへプッシュする必要があります。初回プッシュ時に-uオプションを付けることによって、上流ブランチ(upstream)の設定とプッシュを同時に行えます。
# ローカルブランチをリモートにプッシュし、追跡関係を設定する
git push -u origin feature/login
upstreamとは、ローカルブランチが紐づくリモート側のブランチを指します。-uは--set-upstreamの短縮形で、この設定を一度行ってupstreamが記録されれば、2回目以降はgit pushのみでリモートへ反映できます。
For every branch that is up to date or successfully pushed, add upstream (tracking) reference, used by argument-less git-pull and other commands.
Gitのブランチ作成で知っておきたい命名規則
ブランチ名の付け方にルールを設けておくと、チーム内でブランチの目的を一目で把握でき、管理の効率が向上します。Gitのブランチ名にはいくつかの技術的な制約もあるため、あわせて確認しておきましょう。
ブランチ名に使用できる文字の制約
Gitのブランチ名にはgit-check-ref-formatで定義された命名規則が適用されます。以下の表に主な制約をまとめました。
| 制約内容 | 具体例 |
|---|---|
| スペースは使用不可 | new featureはNG |
| 連続するドット(..)は使用不可 | feature..loginはNG |
| 各要素の先頭ドット・名前末尾のドットは使用不可 | .featureやfeature.はNG |
| チルダ、キャレット、コロンは使用不可 | feature~1はNG |
| ?、*、[は使用不可 | feature*newはNG |
| @{の並びは使用不可 | feature@{0}はNG |
| .lockで終わる名前は使用不可 | main.lockはNG |
| バックスラッシュ(\)は使用不可 | feature\newはNG |
スラッシュ(/)は階層構造を表現するために使用できますが、末尾にスラッシュを置くことや連続した使用はできません。また、スラッシュで区切られた各パートの先頭をドットで始めることも禁止されています。
They can include slash / for hierarchical (directory) grouping, but no slash-separated component can begin with a dot . or end with the sequence .lock.
実務で使われるブランチ命名パターン
多くのチームでは、ブランチの用途に応じたプレフィックス(接頭辞)を付ける命名規則を採用しています。プレフィックスとは、ブランチ名の先頭に付加するfeature/やhotfix/のような分類用の文字列です。
# プレフィックスの例
feature/user-authentication # 新機能の開発
bugfix/header-crash # 既存機能のバグ修正
hotfix/security-patch # 本番環境向けの緊急修正
release/v2.1.0 # リリース前の準備・調整
上記のようにプレフィックスを統一しておくと、git branch --list 'feature/*'のようにワイルドカードで絞り込み検索も可能になります。チーム内でブランチ命名規則を事前に合意しておくことによって、ブランチの目的が明確になり、管理がスムーズです。
Gitのブランチ作成時によくあるエラーと対処法
ブランチの作成時にエラーが発生する原因はいくつかあります。よく遭遇するエラーメッセージと、それぞれの対処法を確認しておきましょう。
「already exists」エラーの対処法
既に同じ名前のブランチが存在する場合に表示されるエラーです。ブランチの一覧を確認し、既存のブランチに切り替えるか、別の名前でブランチを作成してください。
# エラーメッセージの例
# fatal: a branch named 'feature/login' already exists
# 既存ブランチの一覧を確認する
git branch -a
# 既存のブランチに切り替える場合
git switch feature/login
# 別名で新規作成する場合
git switch -c feature/login-v2
ローカルに同名ブランチが残っていることに気づかないケースもあるため、作成前にgit branch -aでローカルとリモートの両方を確認する習慣をつけておくとよいでしょう。-aオプションはローカルブランチとリモート追跡ブランチの両方を一覧表示します。
「未コミットの変更がある」エラーの対処法
未コミットの変更がある状態で「既存の別ブランチ」へ切り替えたり、「過去のコミット」を起点に新しいブランチを作ろうとしたりすると、変更内容が上書きされるのを防ぐためにGitがエラーを出すことがあります。なお、現在のHEADから単純にgit switch -c 新ブランチ名を実行する場合は、未コミットの変更がそのまま新しいブランチへ引き継がれるためエラーにはなりません。
# エラーメッセージの例(既存ブランチへの切り替え時など)
# error: Your local changes to the following files would be overwritten by checkout
# 方法1: 変更をコミットしてから操作をやり直す
git add .
git commit -m "作業中の変更を保存"
# その後、目的のブランチ操作を行う
# 方法2: 変更をスタッシュ(一時退避)してから操作をやり直す
git stash
# 目的のブランチ操作を行った後、必要に応じて退避した変更を復元する
# git stash pop
git stashはワークツリー(作業ディレクトリ)の変更を一時的に退避するコマンドです。作業途中でどうしても別のブランチに切り替える必要があるときに活用してください。
「not a valid branch name」エラーの対処法
ブランチ名にGitの命名規則で禁止されている文字が含まれている場合に発生するエラーです。前述のブランチ命名規則で解説した制約に違反していないか確認してください。
# エラーメッセージの例
# fatal: 'feature..login' is not a valid branch name
# 連続ドットをハイフンに修正する
git switch -c feature-login
# スペースをハイフンに修正する
git switch -c feature-user-auth
ブランチ名にスペースや連続ドット(..)が含まれているケースが代表的な原因です。ハイフン(-)やスラッシュ(/)で単語を区切るようにすれば、命名規則の制約に抵触することなくわかりやすいブランチ名を付けられます。
Gitのブランチ(branch)作成に関するよくある質問
間違った名前でブランチを作成した場合はどうすればよいですか?
git branch -m 旧ブランチ名 新ブランチ名でブランチ名を変更できます。現在チェックアウトしているブランチの名前を変える場合はgit branch -m 新ブランチ名だけで実行可能です。既にリモートにプッシュ済みの場合は、旧名のリモートブランチを削除してから新名でプッシュし直す必要があります。
不要になったブランチを削除するにはどうすればよいですか?
ローカルブランチはgit branch -d ブランチ名で削除できます。-dはマージ済みのブランチのみ削除する安全なオプションで、未マージのブランチを強制削除するには-D(大文字)を使用します。リモートブランチを削除する場合はgit push origin --delete ブランチ名を実行してください。
リモートブランチを元にローカルブランチを作成する最短コマンドは何ですか?
git fetch originの後にgit switch ブランチ名を実行すれば、同名のリモートブランチを起点としたローカルブランチの作成と切り替えが完了します。トラッキングの自動設定やプッシュの手順など、詳しくは「Gitでリモートブランチを元にローカルブランチを作成する方法」を参照してください。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
PythonをWebで実行する方法
共通テスト「情報Ⅰ」2年目で変わる、日本の教育と学び方
gitでブランチ(branch)を切り替える方法
git cloneでブランチを指定する方法
64GBのメモリが必要な人・不要な人の特徴
PCを再起動するコマンド一覧
CapsLock以外で大文字になる原因【Windows編】
パソコンで大文字になるのを解除する方法
面白いAIの活用事例を業界別に紹介
Gitでcommit(コミット)を取り消す方法
ITやプログラミングに関するニュース
サイボウズがkintone AIを正式提供、β版から約1年を経てクレジット制を導入
ロゼッタのラクヤクAIがCSRドラフト作成期間を90%以上短縮、従来4週間を約2日に
AI CROSSが不動産業界向け生成AI伴走支援を開始、アスコットの業務AI実装を実践サポート
日本情報クリエイトが「オーナー提案AIロボⅡ」売買査定を刷新、月1万円からW査定が回数無制限に
Wur株式会社がAI新規事業診断サービス「MVP事業診断レポート」をリリース、12の質問で事業構想を約10分で分析
バトンズがM&A専門家向け「AI概要書」β版を提供開始、企業概要書のドラフトを最速3分で自動生成
SCSKが観光DXサービス「Connexia」を開発、首里城公園でNFT活用の周遊促進が始動
Verdent AI発表、エンジニア不要でソフトウェアを構築する「AIエンジニアリングチーム」が登場
ゼネラルBREXAテクノロジーが外食・小売向けAIサービス「aimana」を開発、店長の意思決定をデータで支援
田中組がKencopa工程AIエージェント製品版を先行利用開始、建設現場の工程管理属人化を解消へ
