Gitでリモートリポジトリをクローンする際、デフォルトではmainやmasterなどのデフォルトブランチが取得されます。しかし、開発中の特定のブランチで作業を開始したい場合や、必要なブランチだけを効率的に取得したい場合は、ブランチを指定してクローンする方法が便利です。
この記事では、git cloneでブランチを指定する具体的なコマンドと、指定時の注意点について解説していきます。
git cloneでブランチを指定するコマンド
git cloneでブランチを指定するには、-bオプションを使用します。-bオプションはclone後にチェックアウトされるブランチ(またはタグ)を指定するためのオプションで、任意のブランチを指定してクローンできます。
-bオプション単体での基本指定に加えて、取得範囲を絞る補助オプションを併用できます。以下の3つの使い方があります。
- -bオプションで指定する
- --single-branchで単一ブランチのみ取得する
- --depthで履歴を限定して取得する
-bは基本のブランチ指定で、--single-branchや--depthは-bと組み合わせて取得範囲を制限する補助オプションです。
それでは各項目について、詳しく解説していきます。
-bオプションで指定する
-bオプションは、git cloneでブランチを指定する最も基本的な方法です。-bの後にブランチ名を指定することによって、clone完了後にそのブランチがチェックアウトされた状態になります。
git clone -b ブランチ名 リポジトリURL
たとえば、developブランチを指定してクローンする場合は以下のように記述します。
git clone -b develop https://github.com/example/repo.git
上記のコマンドを実行すると、リポジトリ全体がクローンされ、作業ディレクトリはdevelopブランチの状態になります。Git公式ドキュメントでは、-bオプションについて以下のように説明されています。
Point the newly created HEAD to <name> branch instead of the branch pointed to by the cloned repository's HEAD. --branch can also take tags and detaches the HEAD at that commit in the resulting repository.
出典:Git公式ドキュメント - git-clone
-b(--branchの短縮形)を使用した場合でも、リモートリポジトリの各ブランチのリモート追跡ブランチは通常のgit cloneと同様に作成されるため、clone後にgit switch mainなどで他のブランチに切り替えることも可能です。なお、-bにはタグ名も指定できます(詳細は後述のよくある質問を参照してください)。
--single-branchで単一ブランチのみ取得する
--single-branchオプションは、指定したブランチの情報だけを取得するオプションです。-bオプションと組み合わせることによって、不要なブランチのデータを取得せずにクローンできるため、リポジトリのサイズが大きい場合にクローン時間やディスク使用量を削減できます。
git clone -b ブランチ名 --single-branch リポジトリURL
たとえば、featureブランチだけを取得する場合は以下のように記述します。
git clone -b feature --single-branch https://github.com/example/repo.git
上記のコマンドでは、featureブランチの先端に至る履歴のみが取得されます。Git公式ドキュメントでは、--single-branchについて以下のように説明されています。
Clone only the history leading to the tip of a single branch, either specified by the --branch option or the primary branch remote's HEAD points at.
出典:Git公式ドキュメント - git-clone
このオプションを指定した場合、他のブランチのリモート追跡ブランチは作成されないため、git branch -aには指定したブランチ関連のもののみが表示されます。CI/CDパイプラインやビルド環境など、特定のブランチだけが必要な場面で有効です。
--depthで履歴を限定して取得する
--depthオプションは、コミット履歴の取得数を制限するオプションです。シャロークローン(浅いクローン)とも呼ばれ、指定した数だけの最新コミットを取得します。
-bオプションと組み合わせることによって、特定ブランチの最新状態だけを高速に取得できます。
git clone -b ブランチ名 --depth 1 リポジトリURL
たとえば、developブランチの最新コミットだけを取得する場合は以下のように記述します。
git clone -b develop --depth 1 https://github.com/example/repo.git
上記のコマンドでは、developブランチの最新1コミット分のみがクローンされます。なお、--depthを指定すると暗黙的に--single-branchも有効になるため、他のブランチのリモート追跡ブランチは作成されません。
コミット履歴が膨大なリポジトリでもクローン時間を大幅に短縮できますが、取得されていない過去の履歴は参照できません。指定ブランチの完全な履歴が必要になった場合はgit fetch --unshallowで取得し直すことが可能です。
全ブランチの情報を追加で取得したい場合は、後述のよくある質問で紹介しているフェッチ設定の変更手順を参照してください。
git cloneでブランチを指定する際の注意点
git cloneでブランチを指定する場合、オプションの指定ミスや存在しないブランチ名の入力によってエラーが発生することがあります。以下の2つの注意点を把握しておくことによって、トラブルを未然に防げます。
- 存在しないブランチ名を指定した場合の挙動
- clone後にブランチを確認する方法
特に、ブランチ名のタイプミスは初心者がつまずきやすいポイントです。clone後のブランチ確認を習慣にしておくと、意図したブランチで作業を開始できているかを素早く判断できます。
それでは各項目について、詳しく解説していきます。
存在しないブランチ名を指定した場合の挙動
-bオプションに存在しないブランチ名を指定した場合、git cloneはエラーを返してクローン自体が実行されません。エラーメッセージはGitのバージョンによって異なりますが、「Remote branch [ブランチ名] not found in upstream origin」のような内容が表示されます。
# 存在しないブランチを指定した場合
git clone -b nonexistent https://github.com/example/repo.git
# fatal: Remote branch nonexistent not found in upstream origin
上記のように、クローンはエラーで終了しますが、作業ディレクトリが途中まで作成された状態で残る場合があります。再度クローンする前に、残ったディレクトリを削除するか別名でクローンし直してください。
リモートのブランチ一覧はgit ls-remote --heads リポジトリURLで事前に確認できます。
clone後にブランチを確認する方法
git cloneでブランチを指定した後は、意図したブランチで作業ディレクトリが構成されているかを確認することが重要です。確認にはgit branch --show-currentコマンドを使用します。
# 現在のブランチを確認する
git branch --show-current
# 全ブランチ(リモート含む)を確認する
git branch -a
上記のコマンドでは、git branch --show-currentで現在チェックアウトされているブランチ名が表示されます。git branch -aを実行するとローカルブランチとリモート追跡ブランチの一覧が表示されるため、--single-branchを使用した場合に取得されたブランチの範囲も確認できます。
git cloneのブランチ指定に関するよくある質問
git clone -bとgit clone後にgit switchする方法はどちらがよいですか?
通常のcloneを前提にすれば、最終的な作業ブランチの状態はほぼ同じです。git clone -bは最初から目的のブランチでチェックアウトされるため手順が少なくて済みます。
clone後に複数のブランチを確認してから選びたい場合は、通常のgit cloneの後にgit switchで切り替える方法が適しています。
| 方法 | 適した場面 |
|---|---|
| git clone -b | 作業ブランチが確定している |
| clone後にgit switch | ブランチを確認してから選びたい |
どちらの方法でもリポジトリの内容に差異はないため、作業フローに合わせて選択してください。
タグを指定してcloneできますか?
-bオプションはブランチだけではなく、タグ名を指定することもできます。タグとは、特定のコミットに付けられた目印のことで、リリースバージョンの管理によく使われます。
git clone -b v1.0.0 https://github.com/example/repo.git
上記のコマンドを実行すると、v1.0.0タグが指すコミットの状態でクローンされます。ただし、タグを指定した場合はdetached HEAD状態(特定のブランチに属さない状態)になるため、新しいコミットを作成する場合はgit switch -c 新しいブランチ名でブランチを作成してください。
--single-branchでcloneした後に他のブランチを追加できますか?
--single-branchでクローンした後でも、追加のブランチを取得することは可能です。リモートのフェッチ設定を変更してからgit fetchを実行することによって、必要なブランチを後から追加できます。
# フェッチ設定を全ブランチ対象に変更する
git remote set-branches origin '*'
# リモートの全ブランチ情報を取得する
git fetch origin
上記のコマンドでは、まずgit remote set-branchesでフェッチ対象を全ブランチに拡大し、git fetch originで情報を取得しています。取得後はgit switch ブランチ名で任意のブランチに切り替えられます。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
PythonをWebで実行する方法
共通テスト「情報Ⅰ」2年目で変わる、日本の教育と学び方
gitでブランチ(branch)を切り替える方法
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エージェント製品版を先行利用開始、建設現場の工程管理属人化を解消へ
