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[=(direct|inherit)] | --no-track] [-f]
[--recurse-submodules] <branch-name> [<start-point>]
git branch (--set-upstream-to=<upstream>|-u <upstream>) [<branch-name>]
git branch --unset-upstream [<branch-name>]
git branch (-m|-M) [<old-branch>] <new-branch>
git branch (-c|-C) [<old-branch>] <new-branch>
git branch (-d|-D) [-r] <branch-name>...
git branch --edit-description [<branch-name>]
DESCRIPTION
--list が指定されている場合、またはオプション以外の引数がない場合は、既存のブランチが一覧表示されます。 現在のブランチは緑色(green)で強調表示され、アスタリスク(*)でマークされます。 リンクされたワークツリーでチェックアウトされたブランチは、シアン(cyan)で強調表示され、プラス記号(+)でマークされます。 オプション -r を指定すると、リモート追跡ブランチが一覧表示され、オプション -a はローカルブランチとリモートブランチの両方を表示します。
<pattern> が指定されている場合、出力を、マッチするブランチに制限するためのシェルワイルドカードとして使用されます。 複数のパターンが指定されている場合、いずれかのパターンに一致するとブランチが表示されます。
<pattern> を提供するときは、 --list を使用する必要があることに注意してください。 そうしないと、コマンドがブランチの作成として解釈される可能性があります。
--contains を使用すると、名前付きコミットを含むブランチ(つまり、先端コミットが名前付きコミットの子孫であるブランチ)のみが表示され、 --no-contains はそれを反転します。 --merged を使用すると、指定されたコミットにマージされたブランチ(つまり、指定されたコミットから先端コミットに到達できるブランチ)のみが一覧表示されます。 --no-merged を使用すると、指定されたコミットにマージされていないブランチのみが一覧表示されます。 <commit> 引数が欠落している場合、デフォルトで HEAD (つまり、現在のブランチの先端)になります。
コマンドの2番目の形式は、 現在の HEAD または、 指定されている場合は <start-point> を指す <branch-name> という名前の新しいブランチ・ヘッドを作成します。 特殊なケースとして、 <start-point> について、マージベースが1つしかない場合は、 <rev-A> と <rev-B> のマージベースのショートカットとして <rev-A>...<rev-B> を使用できます。 最大で <rev-A> と <rev-B> のどちらかを省略できます。 その場合、デフォルトで HEAD になります。
注意: これにより新しいブランチが作成されますが、 作業ツリーはそれに切り替わりません。 git switch <new-branch> を使用して、 新しいブランチに切り替えます。
ローカル・ブランチがリモート追跡ブランチから分岐して作成された場合、 Git はそのブランチに対して自動的に構成設定を行い(具体的には branch.<name>.remote と branch.<name>.merge の構成設定に対して自動的に設定を行う)、 git pull を実行したときに適切にリモート追跡ブランチからマージが行われるようにします。 この自動設定の動作は、 グローバルの branch.autoSetupMerge 構成設定で変更可能です。 この設定は --track や --no-track オプションを使うことで上書きでき、 あとから git branch --set-upstream-to を使って変更することもできます。
-m または -M オプションを使用すると、 <old-branch> の名前を <new-branch> に名前変更します。 <old-branch> に対応する reflog がある場合は、 <new-branch> に一致するように名前変更され、 ブランチの名前変更を記憶するために reflog エントリが作成されます。 <new-branch> が既に存在する場合は、 -M を使用して名前の変更を強制する必要があります。
-c および -C オプションは、 -m および -M とまったく同一の意図(semantics)ですが、ブランチの名前が変更される代わりに、configおよびreflogとともに新しい名前にコピーされます。
-d または -D オプションを使用すると、 <branch-name> が削除されます。 削除するブランチを複数指定できます。 そのブランチに現在 reflog がある場合、 その reflog も削除されます。
-r を -d と一緒に使用して、リモート追跡ブランチを削除します。 リモート追跡ブランチを削除するのは、 リモート・リポジトリーに存在しなくなった場合、または git fetch が再度フェッチしないように構成されている場合にのみ意味があることに注意してください。 廃止されたすべてのリモート追跡ブランチをクリーンアップする方法については、 git-remote(1) の「prune」サブコマンドも参照してください。
OPTIONS
-
-d -
--delete -
ブランチを削除します。 ブランチは、上流ブランチで完全にマージする必要があります。上流が
--trackまたは--set-upstream-toで設定されていない場合は、HEADでマージする必要があります。 -
-D -
--delete--forceのショートカットです。 -
--create-reflog -
ブランチのreflogを作成します。 これにより、 ブランチ参照に加えられたすべての変更の記録がアクティブになり、 <branch-name>
@{yesterday} などの日付ベースのsha1式を使用できるようになります。 非ベア・リポジトリーでは、 通常、reflogはデフォルトでcore.logAllRefUpdates設定オプションによって有効になっていることに注意してください。 否定形式--no-create-reflogは、それ以前の--create-reflogを上書きするだけですが、現在のところcore.logAllRefUpdatesの設定を否定しません。 -
-f -
--force -
<branch-name> がすでに存在する場合でも、 <branch-name> を <start-point> にリセットします。
-fがないと、gitbranchは既存のブランチの変更を拒否します。-d(または--delete)と組み合わせて、 マージされたステータスに関係なく、または有効なコミットを指しているかどうかに関係なく、ブランチを削除できるようにします。-m(または--move)と組み合わせて、新しいブランチ名がすでに存在する場合でもブランチの名前を変更できるようにします。同じことが-c(または--copy)にも当てはまります。注意:
gitbranch-f<branch-name> [<start-point>] は、-fを指定しても、 同一ポジトリにリンクされた別のワークツリーでチェックアウトされている既存のブランチ <branch-name> を変更することを拒否することに注意してください。 -
-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)。
-
--omit-empty -
書式が空の文字列に展開される。 書式化された参照の後ろに改行を出力しないでください。
-
--column[=<options>] -
--no-column -
ブランチの一覧表示を複数列に表示します。 オプションの構文については、構成変数
column.branchを参照してください。 オプションのない--columnと--no-columnは、それぞれalwaysとneverと同等です。このオプションは、非おしゃべりモード(non-verbose mode)でのみ適用できます。
-
--sort=<key> -
<key> に基づいてソートします。 値の降順でソートする場合は、先頭に
-を付けます。--sort=<key> オプションは複数回指定することができ、 その場合、 最後に指定したキーが主キーとなります。 サポートされているキーは、 git-for-each-ref(1) で使用可能なものと同一です。 ソート順のデフォルトは、branch.sort構成変数に設定がある場合はその値を使用し、 そうでない場合はフルの参照名(refs/... プレフィックスを含む)に基づくソートとなります。 この場合、 存在する場合は切り離された HEAD (detached HEAD)が最初にリストされ、 次にローカル・ ブランチ、 最後にリモート追跡ブランチが続きます。 git-config(1) を参照してください。 -
-r -
--remotes -
リモート追跡ブランチを一覧表示または削除(
-dとともに使用する場合)します。 オプションのパターンに一致するように--listと組み合わせます。 -
-a -
--all -
リモート追跡ブランチとローカル・ブランチの両方を一覧表示します。
--listと組み合わせて、オプションのパターンにマッチさせます。 -
-l -
--list -
ブランチを一覧表示します。 オプションで <pattern>... を使用します。 たとえば
gitbranch--list'maint-*' は、指定のパターンmaint-*にマッチするブランチのみをリストします。 -
--show-current -
現在のブランチの名前を出力します。
HEADを切り離した(detached HEAD)状態では、何も出力されません。 -
-v -
-vv -
--verbose -
リスト・モードの場合は、 sha1を表示し、 各ヘッドの件名と、 (存在する場合、 )上流ブランチとの関係をコミットします。 2回指定した場合は、 (存在する場合)リンクされたワークツリーのパスと、 上流ブランチの名前も出力します(
gitremoteshow<remote> も参照)。 注意: 現在のワークツリーのHEADはパスが出力されないことに注意してください(常に現在のディレクトリになります)。 -
-q -
--quiet -
エラー以外のメッセージを抑制して、ブランチを作成または削除するときはもっと静かにしてください。
-
--abbrev=<n> -
コミットオブジェクト名を示す詳細リストで、オブジェクトを一意に参照する、少なくとも16進数で <n> 桁の長さがある最短のプレフィックスを表示します。 デフォルト値は 7 で、
core.abbrev構成オプションで上書きできます。 -
--no-abbrev -
省略せずに、出力リストに完全なsha1を表示します。
-
-t -
--track[=(direct|inherit)] -
新しいブランチを作成するときは、
branch.<name>.remoteおよびbranch.<name>.merge構成エントリをセットアップして、新しいブランチの「上流」追跡構成(upstream tracking configuration)を設定します。 この構成は、gitstatusとgitbranch-vで、2つのブランチの間の関係を表示するようにgitに指示します。 さらに、引数なしでgitpullに、新しいブランチがチェックアウトされたときに上流(upstream)からプルするように指示します。オプションの引数に応じて、正確な上流(upstream)ブランチが選択されます。
-tまたは--trackまたは--track=directは、起点(start-point)ブランチ自体を上流として使用することを意味します。--track=inheritは、起点ブランチの上流構成(upstream configuration)をコピーすることを意味します。branch.autoSetupMerge構成変数は、--trackも--no-trackも指定されていない場合に、gitswitchやgitcheckoutやgitbranchがどのように振る舞うかを指定します:オプションのデフォルトである
trueは、起点(start-point)がリモート追跡ブランチである場合はいつでも--track=directが指定されたかのように振る舞います。falseは、--no-trackが指定されたかのように振る舞います。alwaysは、--track=directが指定されたかのように振る舞います。inheritは--track=inheritが与えられたかのように振る舞います。simpleは、起点(<start-point>)がリモート追跡ブランチであり、 かつ、 新しいブランチがリモート・ブランチと同じ名前を持つ場合にのみ、--track=directが指定されたかのように振る舞います。branch.<name>.remoteおよびbranch.<name>.mergeオプションの使用方法に関する追加の説明については、 git-pull(1) および git-config(1) を参照してください。 -
--no-track -
branch.autoSetupMerge構成変数がセットされている場合でも、 「upstream」構成をセットアップしないでください。 -
--recurse-submodules -
このオプションは実験的機能です!(THIS OPTION IS EXPERIMENTAL!)
submodule.propagateBranchesが有効になっている場合、現在のコマンドをサブモジュール内でも再帰させます。 git-config(1) のsubmodule.propagateBranchesを参照してください。 現在、ブランチの作成のみがサポートされています。ブランチの作成で使用すると、 新しいブランチ <branch-name> がスーパー・プロジェクト内に作成され、 すべてのサブモジュールがスーパー・プロジェクトの <start-point> に作成されます。 サブモジュールでは、 ブランチはスーパー・プロジェクトの <start-point> でサブモジュールのコミットを指しますが、 ブランチの追跡情報はサブモジュールのブランチとリモートに基づいて設定されます。 例えば
gitbranch--recurse-submodulestopicorigin/mainは、スーパー・プロジェクトのorigin/main内のサブモジュール・コミットを指すサブモジュール・ブランチtopicを作成しますが、 サブモジュールのorigin/mainを追跡します。 -
--set-upstream -
このオプションは構文がわかりにくいため、サポートされなくなりました。 代わりに
--trackまたは--set-upstream-toを使用してください。 -
-u<upstream> -
--set-upstream-to=<upstream> -
<branch-name> の追跡情報を設定して、 <upstream> が <branch-name> の上流ブランチと見なされるようにします。 <branch-name> が指定されていない場合、 デフォルトで現在のブランチになります。
-
--unset-upstream -
<branch-name> の上流情報を削除します。 ブランチが指定されていない場合、デフォルトで現在のブランチになります。
-
--edit-description -
エディタを開き、テキストを編集して、ブランチの目的を説明し、他のさまざまなコマンド(
format-patch、` request-pull` 、merge(有効な場合) など)で使用できるようにします。 複数行の説明を使用できます。 -
--contains[<commit>] -
指定の <commit> を含むブランチのみをリストします(指定されていない場合は
HEAD)。--listの指定を含んでいます。 -
--no-contains[<commit>] -
指定の <commit> を含ま無いブランチのみをリストします(指定されていない場合は
HEAD)。--listの指定を含んでいます。 -
--merged[<commit>] -
指定の <commit> から先端に到達できるブランチのみをリストします(指定されていない場合は
HEAD)。--listの指定を含んでいます。 -
--no-merged[<commit>] -
指定の <commit> から先端に到達でき無いブランチのみをリストします(指定されていない場合は
HEAD)。--listの指定を含んでいます。 -
--points-at<object> -
指定の <object> のブランチのみをリストします。
-
--format<format> -
表示されているブランチ参照とそれが指すオブジェクトを %(
fieldname) によって差し込みする書式文字列。 <format> はgit-for-each-ref(1) の形式と同じです。 - <branchname>
-
作成または削除するブランチの名前。 新しいブランチ名は、 git-check-ref-format(1) で定義されているすべてのチェックに合格する必要があります。 これらのチェックの一部は、ブランチ名で使える文字を制限する場合があります。
- <start-point>
-
新しいブランチ・ヘッドはこのコミットを指します。 ブランチ名またはコミットIDまたはタグとして指定できます。 このオプションを省略すると、 代わりに現在の
HEADが使用されます。 - <oldbranch>
-
既存のブランチの名前。 このオプションを省略した場合は、 代わりに現在のブランチの名前が使用されます。
- <newbranch>
-
既存のブランチの新しい名前。 <branch-name> と同じ制限が適用されます。
CONFIGURATION
pager.branch は、ブランチを一覧表示する場合、 つまり --list が使用または暗示されている場合にのみ尊重されます。 デフォルトでは pager を使用します。 git-config(1) を参照してください。
このセクションのこの行より上にあるものはすべて、 git-config(1) ドキュメントには含まれていません。 以下の内容に関しては、git-config(1) ドキュメント にあるものと同一です。
-
branch.autoSetupMerge -
gitbranchやgitswitchやgitcheckoutにて、 新しいブランチを作成する際に、 開始点のブランチから git-pull(1) が適切にマージするよう設定するかどうかを指示します。 このオプションが設定されていなくても、 ブランチごとに--trackや--no-trackオプションを使ってこの振る舞いを選択できます。 このオプションのデフォルトは true です。 有効な設定値は以下の通りです:-
false -
自動設定は行われません
-
true -
開始点がリモート追跡ブランチの場合に自動設定が行われます
-
always -
開始点がローカル・ブランチまたはリモート追跡ブランチのいずれかの場合に自動設定が行われます
-
inherit -
開始点に追跡構成(tracking configuration)があれば、 それを新しいブランチにコピーします
-
simple -
開始点がリモート追跡ブランチの場合で、 かつ新しいブランチの名前がリモート・ブランチと同じ名前の場合にのみ自動設定が行われます。
-
-
branch.autoSetupRebase -
新しいブランチを
gitbranchまたはgitswitchまたはgitcheckoutで作成し、 作成したそのブランチが別のブランチを追跡する場合、 この変数はgitpullがマージではなくリベースを行うよう設定するかどうかを Git に指示します(branch.<name>.rebase を参照します)。 有効な設定値は以下の通りです:-
never -
リベースを自動的に true に設定することはありません。
-
local -
他のローカル・ブランチを追跡するブランチに対して、 リベースを true に設定します。
-
remote -
リモート追跡ブランチを追跡するブランチに対して、 リベースを true に設定します。
-
always -
すべての追跡ブランチに対して、 リベースを true に設定します。
ブランチを別のブランチの追跡対象として設定する方法の詳細については、
branch.autoSetupMergeを参照してください。 なお、 このオプションのデフォルトはneverです。 -
-
branch.sort -
この変数は、 git-branch(1) によって表示されるときのブランチの並べ替え順序を制御します。
--sort=<value> オプションが指定されていない場合、この変数の値がデフォルトとして使用されます。 有効な値については、 git-for-each-ref(1) のfield namesを参照してください。 -
branch.<name>.remote -
ブランチ <name> にいる場合、フェッチ元またはプッシュ先 のremoteを
gitfetchとgitpushに通知します。 プッシュ先のremoteは、 (全ブランチ用の)remote.pushDefaultでオーバーライドできます。 現在のブランチの場合、プッシュ先のremoteは、branch.<name>.pushRemoteによってさらにオーバーライドされる可能性があります。 remoteが構成されていない場合、または、どのブランチにも属しておらずリポジトリに複数のremoteが定義されている場合、フェッチの場合はoriginに、プッシュの場合はremote.pushDefaultにデフォルト設定されます。 さらに、 . (ピリオド)は現在のローカルリポジトリ(ドットリポジトリ)です。下記branch.<name>.mergeの最後の注意を参照してください。 -
branch.<name>.pushRemote -
ブランチ <name> にいる場合、プッシュするための
branch.<name>.remoteをオーバーライドします。 また、ブランチ<name>からプッシュするためのremote.pushDefaultをオーバーライドします。 ある場所(あなたのアップストリームなど)から別の場所(独自の公開リポジトリなど)にプッシュする場合は、remote.pushDefaultを設定して、すべてのブランチにプッシュするリモートを指定し、そして、このオプションを使用して 特定のブランチに対してオーバーライドします。 -
branch.<name>.merge -
branch.<name>.remoteとともに、指定されたブランチの上流ブランチを定義します。 マージするブランチをgitfetch/gitpull/gitrebaseに通知し、gitpushにも影響を与える可能性があります(push.default参照)。 ブランチ <name> にいる場合、 FETCH_HEAD でマージするためにマークされるデフォルトの refspec をgitfetchに指示します。 値は refspec のリモート部分のように処理され、branch.<name>.remoteで指定されたリモートからフェッチされた参照と一致する必要があります。 マージ情報は、マージのためにデフォルトのブランチを検索するためにgitpull(最初にgitfetchを呼び出します)によって使用されます。 このオプションがない場合、gitpullはデフォルトで、 フェッチされた最初の refspec をマージします。 octopus マージを取得するには、 複数値を指定します。 あなたがローカル・リポジトリー内の別のブランチから <name> にマージされるようにgitpullを設定したい場合は、branch.<name>.mergeが目的のブランチを指すようにして、 そして、branch.<name>.remoteには相対パス設定 . (ピリオド)が使用できます。 -
branch.<name>.mergeOptions -
ブランチ <name> にマージするためのデフォルト・オプションを設定します。 構文とサポートされているオプションは git-merge(1) のものと同じですが、 空白文字を含むオプション値は現在サポートされていません。
-
branch.<name>.rebase -
true の場合、
gitpullの実行時にデフォルトのリモートからデフォルトのブランチをマージするのではなく、 フェッチされたブランチの上にブランチ <name> をリベースします。 ブランチ固有ではない方法でこれを行うには、pull.rebaseを参照してください。merges(または単にm) の場合、--rebase-mergesオプションをgitrebaseに渡して、ローカル・マージ・コミットがリベースに含まれるようにします (詳細については git-rebase(1) を参照してください)。値が
interactive(または単にi)の場合、リベースは対話モードで実行されます。注意: これはおそらく危険な操作です。 あなたが影響を理解していない限り、使用しないでください (詳細については、 git-rebase(1) を参照してください)。
-
branch.<name>.description -
ブランチの説明は、
gitbranch--edit-descriptionで編集できます。 ブランチの説明は、format-patchのカバーレターまたはrequest-pullの概要に自動的に追加されます。
EXAMPLES
- 既知のタグから開発開始
-
$ 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-
このステップと次のステップは、
checkout-bmy2.6.14v2.6.14を使用して1つのステップに組み合わせることができます。
-
- 不要なブランチを削除
-
$ 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>-
リモート追跡ブランチ「todo」と「html」と「man」を削除します。 この後の
fetchまたはpullは、あなたが構成しないように構成しない限り、それらを再度作成します。 git-fetch(1) を参照してください。 -
「master」ブランチ(または現在チェックアウトされているブランチ)にtestブランチからのすべてのコミットがない場合でも、「test」ブランチを削除します。
-
- 指定のリモートからのブランチをリストする
-
$ git branch -r -l '<remote>/<pattern>' <1> $ git for-each-ref 'refs/remotes/<remote>/<pattern>' <2>-
-aを使用すると、 <remote> が、 あなたがたまたま同一の <remote> パターンでプレフィックスを付けたローカル・ブランチと混同されてしまいます。 -
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-check-ref-format(1), git-fetch(1), git-remote(1), "Understanding history: What is a branch?" in the Git User’s Manual.
GIT
Part of the git(1) suite