Gitでブランチ(branch)を作成する方法

Gitでブランチ(branch)を作成する方法

公開: 更新:
CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座

Gitでブランチ(branch)を作成したいけど、コマンドの種類が多くてどれを使えばよいか迷っていませんか。ブランチの作成方法は複数あり、状況に応じて使い分けることによって、開発効率が大きく変わります。

この記事では、Gitのブランチ作成に使う主要コマンドの一覧から、ローカルブランチ・リモートブランチの作成手順、実務で役立つ命名規則やトラブルシューティングまで網羅的に解説しています。初心者の方でもコマンドをコピペしてすぐに使える内容になっているので、ぜひ最後までご覧ください。



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公式ドキュメント - git-switch

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公式ドキュメント - git-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だけではなく、過去のコミットやタグを起点にブランチを作成するケースもあります。リリース済みのバージョンに対する修正や、特定時点からの機能開発を行うときに活用できます。


Python研修一覧はこちら

目的に合うPython研修を一覧形式から探したい方は、ぜひご利用ください。

Python研修を比較する

Java研修一覧はこちら

目的に合うJava研修を一覧形式から探したい方は、ぜひご利用ください。

Java研修を比較する

PHP研修一覧はこちら

目的に合うPHP研修を一覧形式から探したい方は、ぜひご利用ください。

PHP研修を比較する

新入社員研修

目的に合う新入社員研修を一覧形式から探したい方は、ぜひご利用ください。

新入社員研修を比較する

全ての研修からも探したい方はこちら

コミットハッシュを指定してブランチを作成する手順

コミットハッシュとは、各コミットを一意に識別する英数字の文字列です。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-push

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.

Git公式ドキュメント - git-check-ref-format


Python基礎・実践(Django)

企業・法人向けのPython研修では、基礎から応用まで体系的に学べます。

Python研修の詳細

DX社員研修

企業・法人向けのDX研修では、実務に繋がるリスキリングでITレベルを向上させます。

DX研修の詳細

Javaエンジニア育成研修

企業・法人向けのJavaエンジニア育成研修では、Javaの基礎から応用まで確実に習得できます。

Java研修の詳細

新卒・新入社員向け研修

企業・法人に新入社員・新卒社員に向けたプログラミング研修を提供しています。

新入社員研修の詳細

コードキャンプのIT研修を全て見る

実務で使われるブランチ命名パターン

多くのチームでは、ブランチの用途に応じたプレフィックス(接頭辞)を付ける命名規則を採用しています。プレフィックスとは、ブランチ名の先頭に付加する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やプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

企業・法人向けのIT・プログラミング・生成AI研修を探す、比較する - IT・プログラミングを知って学べるコネクトメディア CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプが提供する無料で学べるプログラミングスクール講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 3.5日の研修で、年間1,600時間の削減効果が見込まれる。東京きらぼしフィナンシャルグループのDX人材育成事例 - IT・プログラミングを知って学べるコネクトメディア 配属3ヶ月で30%の生産性向上を実現するいよぎんコンピュータサービスの新人研修に迫る - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する