SYNOPSIS

git branch [--color[=<when>] | --no-color] [--show-current]
        [-v [--abbrev=<n> | --no-abbrev]]
        [--column[=<options>] | --no-column] [--sort=<key>]
        [--merged [<commit>]] [--no-merged [<commit>]]
        [--contains [<commit>]] [--no-contains [<commit>]]
        [--points-at <object>] [--format=<format>]
        [(-r | --remotes) | (-a | --all)]
        [--list] [<pattern>…]
git branch [--track | --no-track] [-f] <branchname> [<start-point>]
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
git branch --unset-upstream [<branchname>]
git branch (-m | -M) [<oldbranch>] <newbranch>
git branch (-c | -C) [<oldbranch>] <newbranch>
git branch (-d | -D) [-r] <branchname>…
git branch --edit-description [<branchname>]

DESCRIPTION

--list が指定されている場合、またはオプション以外の引数がない場合は、既存のブランチが一覧表示されます。 現在のブランチは緑色(green)で強調表示され、アスタリスク(*)でマークされます。 リンクされたワークツリーでチェックアウトされたブランチは、シアン(cyan)で強調表示され、プラス記号(+)でマークされます。 オプション -r を指定すると、リモート追跡ブランチが一覧表示され、オプション -a はローカルブランチとリモートブランチの両方を表示します。

<pattern> が指定されている場合、出力を、マッチするブランチに制限するためのシェルワイルドカードとして使用されます。 複数のパターンが指定されている場合、いずれかのパターンに一致するとブランチが表示されます。

<pattern> を提供するときは、 --list を使用する必要があることに注意してください。 そうしないと、コマンドがブランチの作成として解釈される可能性があります。

--contains を使用すると、名前付きコミットを含むブランチ(つまり、先端コミットが名前付きコミットの子孫であるブランチ)のみが表示され、 --no-contains はそれを反転します。 --merged を使用すると、指定されたコミットにマージされたブランチ(つまり、指定されたコミットから先端コミットに到達できるブランチ)のみが一覧表示されます。 --no-merged を使用すると、指定されたコミットにマージされていないブランチのみが一覧表示されます。 <commit> 引数が欠落している場合、デフォルトで HEAD (つまり、現在のブランチの先端)になります。

コマンドの2番目の形式は、現在の HEAD 、または、指定されている場合は <start-point> を指す <branchname> という名前の新しいブランチヘッドを作成します。 特殊なケースとして、 <start-point> について、マージベースが1つしかない場合は、AB のマージベースのショートカットとして A...B を使用できます。 最大で AB のいずれかを省略できます。その場合、デフォルトで HEAD になります。

注意: これにより新しいブランチが作成されますが、作業ツリーはそれに切り替わりません。 git switch <newbranch> を使用して、新しいブランチに切り替えます。

ローカルブランチがリモート追跡ブランチから開始されると、Gitはブランチ(具体的には branch.<name>.remotebranch.<name>.merge の構成エントリ)をセットアップし、 git pull でリモート追跡ブランチから適切にマージするようにします。 この動作は、グローバルな branch.autoSetupMerge 構成フラグを介して変更できます。 この設定は、 --track および --no-track オプションを使用してオーバーライドでき、後で git branch --set-upstream-to を使用して変更できます。

-m または -M オプションを使用すると、 <oldbranch> の名前を <newbranch> に名前変更します。 <oldbranch> に対応するreflogがある場合は、 <newbranch> に一致するように名前変更され、ブランチの名前変更を記憶するためにreflogエントリが作成されます。 <newbranch> が存在する場合は、 -M を使用して名前の変更を強制する必要があります。

-c および -C オプションは、 -m および -M とまったく同一の意図(semantics)ですが、ブランチの名前が変更される代わりに、configおよびreflogとともに新しい名前にコピーされます。

-d または -D オプションを使用すると、 <branchname> が削除されます。 削除するブランチを複数指定できます。 現在、ブランチがreflogを持っている場合、reflogも削除されます。

-r-d と一緒に使用して、リモート追跡ブランチを削除します。 リモート追跡ブランチを削除するのは、リモートリポジトリに存在しなくなった場合、または git fetch が再度フェッチしないように構成されている場合にのみ意味があることに注意してください。 廃止されたすべてのリモート追跡ブランチをクリーンアップする方法については、 git-remote(1) の「prune」サブコマンドも参照してください。

OPTIONS

-d
--delete

ブランチを削除します。 ブランチは、アップストリームブランチで完全にマージする必要があります。アップストリームが --track または --set-upstream-to で設定されていない場合は、HEAD でマージする必要があります。

-D

--delete --force のショートカットです。

--create-reflog

ブランチのreflogを作成します。 これにより、ブランチrefに加えられたすべての変更の記録がアクティブになり、 <branchname>@\{yesterday} などの日付ベースのsha1式を使用できるようになります。 非ベアリポジトリでは、通常、reflogはデフォルトで core.logAllRefUpdates 設定オプションによって有効になっていることに注意してください。 否定形式 --no-create-reflog は、それ以前の --create-reflog をオーバーライドするだけですが、現在のところ core.logAllRefUpdates の設定を否定しません。

-f
--force

<branchname> がすでに存在する場合でも、 <branchname> を <startpoint> にリセットします。 -f がないと、 git branch は既存のブランチの変更を拒否します。 -d(または --delete)と組み合わせて、マージされたステータスに関係なく、または有効なコミットを指しているかどうかに関係なく、ブランチを削除できるようにします。 -m(または --move)と組み合わせて、新しいブランチ名がすでに存在する場合でもブランチの名前を変更できるようにします。同じことが -c(または --copy)にも当てはまります。

-m
--move

ブランチと、対応するreflogを、移動/名前変更 します。

-M

--move --force のショートカットです。

-c
--copy

ブランチと、対応するreflogをコピーします。

-C

--copy --force のショートカットです。

--color[=<when>]

現在のブランチと、ローカルブランチと、リモート追跡ブランチを強調表示するためにブランチに色を付けます。値は always (デフォルト) または never または auto でなければなりません。

--no-color

構成ファイルでデフォルトのカラー出力が指定されている場合でも、ブランチの色付けをオフにします。 --color=never と同じです。

-i
--ignore-case

ブランチの並べ替えとフィルタリングでは英大文字小文字を区別しません(case insensitive)。

--column[=<options>]
--no-column

ブランチの一覧表示を複数列に表示します。 オプションの構文については、構成変数 column.branch を参照してください。 オプションのない --column--no-column は、それぞれ alwaysnever と同等です。

このオプションは、非おしゃべりモード(non-verbose mode)でのみ適用できます。

-r
--remotes

リモートトラッキングブランチを一覧表示または削除(-d とともに使用する場合)します。 オプションのパターンに一致するように --list と組み合わせます。

-a
--all

リモートトラッキングブランチとローカルブランチの両方を一覧表示します。 --list と組み合わせて、オプションのパターンにマッチさせます。

-l
--list

ブランチを一覧表示します。 オプションの`<pattern>…を使用します。 例: `git branch --list 'maint-*' パターンにマッチするブランチのみをリストします。

--show-current

現在のブランチの名前を出力します。 HEADを切り離した(detached HEAD)状態では、何も出力されません。

-v
-vv
--verbose

リストモード(list mode)の場合は、sha1を表示し、各ヘッドの件名と、(存在する場合、)アップストリームブランチとの関係をコミットします。 2回指定した場合は、リンクされたワークツリーのパス(存在する場合)とアップストリームブランチの名前も出力します(git remote show <remote> も参照)。 現在のワークツリーのHEADにはパスが出力されないことに注意してください(常に現在のディレクトリになります)。

-q
--quiet

エラー以外のメッセージを抑制して、ブランチを作成または削除するときはもっと静かにしてください。

--abbrev=<n>

コミットオブジェクト名を示す詳細リストで、オブジェクトを一意に参照する、少なくとも16進数 <n> 桁の長さの最短のプレフィックスを表示します。 デフォルト値は 7 で、 core.abbrev 構成オプションでオーバーライドできます。

--no-abbrev

省略せずに、出力リストに完全なsha1を表示します。

-t
--track

新しいブランチを作成するときは、 branch.<name>.remote および branch.<name>.merge 構成エントリを設定して、開始点ブランチを新しいブランチの「アップストリーム」としてマークします。 この構成は、 git statusgit branch -v で、2つのブランチの間の関係を表示するようにgitに指示します。 さらに、引数なしで git pull に、新しいブランチがチェックアウトされたときにアップストリームからプルするように指示します。

この振る舞いは、開始点がリモート追跡ブランチである場合のデフォルトです。 git switchgit checkoutgit branch を常に --no-track が指定されているかのように動作させる場合は、 branch.autoSetupMerge構成変数を false に設定します。 開始点がローカルまたはリモート追跡ブランチのいずれかであるときにこの動作が必要な場合は、これを always に設定します。

--no-track

branch.autoSetupMerge構成変数がtrueの場合でも、「upstream」構成をセットアップしないでください。

--set-upstream

このオプションは構文がわかりにくいため、サポートされなくなりました。 代わりに --track または --set-upstream-to を使用してください。

-u <upstream>
--set-upstream-to=<upstream>

<branchname> の追跡情報を設定して、<upstream> が <branchname> のアップストリームブランチと見なされるようにします。 <branchname> が指定されていない場合、デフォルトで現在のブランチになります。

--unset-upstream

<branchname> のアップストリーム情報を削除します。 ブランチが指定されていない場合、デフォルトで現在のブランチになります。

--edit-description

エディタを開き、テキストを編集して、ブランチの目的を説明し、他のさまざまなコマンド(format-patch 、` request-pull` 、 merge (有効な場合) など)で使用できるようにします。 複数行の説明を使用できます。

--contains [<commit>]

指定されたコミットを含むブランチのみをリストします(指定されていない場合はHEAD)。 --list の指定を含んでいます。

--no-contains [<commit>]

指定されたコミットを含まないブランチのみをリストします(指定されていない場合はHEAD)。 --list の指定を含んでいます。

--merged [<commit>]

指定されたコミットから先端に到達できるブランチのみをリストします(指定されていない場合はHEAD)。 --list の指定を含んでいます。

--no-merged [<commit>]

指定されたコミットから先端に到達できないブランチのみをリストします(指定されていない場合はHEAD)。 --list の指定を含んでいます。

<branchname>

作成または削除するブランチの名前。 新しいブランチ名は、 git-check-ref-format(1) で定義されているすべてのチェックに合格する必要があります。 これらのチェックの一部は、ブランチ名で許可される文字を制限する場合があります。

<start-point>

新しいブランチヘッドはこのコミットを指します。 ブランチ名 または commit-id または タグ として指定できます。 このオプションを省略すると、代わりに現在のHEADが使用されます。

<oldbranch>

名前を変更する既存のブランチの名前。

<newbranch>

既存のブランチの新しい名前。 <branchname> と同じ制限が適用されます。

--sort=<key>

指定されたキーに基づいて並べ替えます。 プレフィックス - を使用して、値の降順で並べ替えます。 --sort=<key> オプションを複数回使用できます。その場合、最後のキーが主キーになります。 サポートされているキーは、 gitfor-each-ref のキーと同じです。 ソート順は、デフォルトで、 branch.sort 変数が存在する場合はその値に設定されているか、完全なrefname (refs/... プレフィックスを含む)に基づいてソートされます。 これにより、切り離されたHEAD(detached HEAD)(存在する場合)が最初にリストされ、次にローカルブランチ、最後にリモート追跡ブランチがリストされます。 git-config(1) を参照してください。

--points-at <object>

指定されたオブジェクトのブランチのみを一覧表示します。

--format <format>

表示されているブランチrefとそれが指すオブジェクトを %(fieldname) によって差し込みする書式文字列。 形式はgit-for-each-ref(1) の形式と同じです。

CONFIGURATION

pager.branch は、ブランチを一覧表示する場合、 つまり --list が使用または暗示されている場合にのみ尊重されます。 デフォルトでは、ページャーを使用します。 git-config(1) を参照してください。

EXAMPLES

Start development from a known tag
$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
$ cd my2.6
$ git branch my2.6.14 v2.6.14   <1>
$ git switch my2.6.14
  1. このステップと次のステップは、 checkout -b my2.6.14 v2.6.14 を使用して1つのステップに組み合わせることができます。

Delete an unneeded branch
$ git clone git://git.kernel.org/.../git.git my.git
$ cd my.git
$ git branch -d -r origin/todo origin/html origin/man   <1>
$ git branch -D test                                    <2>
  1. リモート追跡ブランチ「todo」と「html」と「man」を削除します。 この後の fetch または pull は、あなたが構成しないように構成しない限り、それらを再度作成します。 git-fetch(1) を参照してください。

  2. 「master」ブランチ(または現在チェックアウトされているブランチ)にtestブランチからのすべてのコミットがない場合でも、「test」ブランチを削除します。

Listing branches from a specific remote
$ git branch -r -l '<remote>/<pattern>'                 <1>
$ git for-each-ref 'refs/remotes/<remote>/<pattern>'    <2>
  1. -a を使用すると、<remote>が、同じ<remote>パターンのプレフィックスが付いているローカルブランチと混同されます。

  2. for-each-ref は幅広いオプションをとることができます。 git-for-each-ref(1) を参照してください

通常、パターンにはクォートが必要です。

NOTES

すぐに切り替えたいブランチを作成する場合は、 git switch コマンドとその -c オプションを使用して、1つのコマンドで同じことを行う方が簡単です。

オプション --contains と ` --no-contains` と --merged--no-merged は、4つの関連しているが異なる目的を果たします:

  • --contains <commit> は、<commit>がリベースまたは修正された場合に特別な注意が必要なすべてのブランチを検索するために使用されます。これらのブランチには、指定された<commit>が含まれているためです。

  • --no-contains <commit> はその逆です。つまり、指定された<commit>を含まないブランチです。

  • --merged は、安全に削除できるすべてのブランチを検索するために使用されます。これらのブランチはHEADに完全に含まれているためです。

  • --no-merged は、HEADにマージする候補となるブランチを見つけるために使用されます。これらのブランチは、HEADに完全には含まれていないためです。

複数の --contains フィルターと --no-contains フィルターを組み合わせる場合、少なくとも1つの --contains コミットを含み、 --no-contains コミットを含まない参照のみが表示されます。

複数の --merged フィルターと --no-merged フィルターを組み合わせると、少なくとも1つの --merged コミットから到達可能で、 --no-merged コミットのいずれからも到達できない参照のみが表示されます。

SEE ALSO

GIT

Part of the git(1) suite