セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.50.1 変更なし
-
2.50.0
2025-06-16
- 2.44.1 → 2.49.1 変更なし
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 変更なし
-
2.43.0
2023-11-20
- 2.41.1 → 2.42.4 変更なし
-
2.41.0
2023-06-01
- 2.40.1 → 2.40.4 変更なし
-
2.40.0
2023-03-12
- 2.39.4 → 2.39.5 変更なし
-
2.39.3
2023-04-17
- 2.38.1 → 2.39.2 変更なし
-
2.38.0
2022-10-02
- 2.37.1 → 2.37.7 変更なし
-
2.37.0
2022-06-27
- 2.36.1 → 2.36.6 変更なし
-
2.36.0
2022-04-18
- 2.35.1 → 2.35.8 変更なし
-
2.35.0
2022-01-24
- 2.34.1 → 2.34.8 変更なし
-
2.34.0
2021-11-15
- 2.33.2 → 2.33.8 変更なし
-
2.33.1
2021-10-12
- 2.31.1 → 2.33.0 変更なし
-
2.31.0
2021-03-15
- 2.30.1 → 2.30.9 変更なし
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 変更なし
-
2.29.0
2020-10-19
- 2.28.1 変更なし
-
2.28.0
2020-07-27
- 2.23.1 → 2.27.1 変更なし
-
2.23.0
2019-08-16
- 2.22.2 → 2.22.5 変更なし
-
2.22.1
2019-08-11
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 変更なし
-
2.21.0
2019-02-24
- 2.20.1 → 2.20.5 変更なし
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 変更なし
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 変更なし
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 変更なし
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
- 2.10.5 → 2.11.4 変更なし
-
2.9.5
2017-07-30
- 2.8.6 変更なし
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
- 2.5.6 変更なし
-
2.4.12
2017-05-05
- 2.1.4 → 2.3.10 変更なし
-
2.0.5
2014-12-17
概要
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>]
説明
--list
が指定されている場合、またはオプション以外の引数がない場合、既存のブランチが一覧表示されます。現在のブランチは緑色でハイライトされ、アスタリスクでマークされます。リンクされたワークツリーでチェックアウトされているブランチはシアンでハイライトされ、プラス記号でマークされます。オプション -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> のうち最大1つを省略でき、その場合、デフォルトは 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
とまったく同じセマンティクスを持ちますが、ブランチが名前変更される代わりに、設定と reflog とともに新しい名前にコピーされます。
-d
または -D
オプションを使用すると、<branch-name> が削除されます。複数のブランチを削除のために指定できます。ブランチに現在 reflog がある場合、reflog も削除されます。
リモートトラッキングブランチを削除するには、-r
と -d
を組み合わせて使用します。リモートトラッキングブランチを削除するのは、リモートリポジトリに存在しなくなった場合、または git
fetch
がそれらを再度フェッチしないように設定されている場合にのみ意味があることに注意してください。すべての古いリモートトラッキングブランチをクリーンアップする方法については、git-remote[1] の prune
サブコマンドも参照してください。
オプション
-d
--delete
-
ブランチを削除します。ブランチは、アップストリームブランチに完全にマージされているか、
--track
または--set-upstream-to
でアップストリームが設定されていない場合はHEAD
に完全にマージされている必要があります。 -D
-
--delete
--force
のショートカット。 --create-reflog
-
ブランチの reflog を作成します。これにより、ブランチ ref に加えられたすべての変更の記録がアクティブになり、<branch-name>
@{yesterday}
のような日付ベースの sha1 式を使用できるようになります。非ベアリポジトリでは、reflog は通常、core.logAllRefUpdates
設定オプションによってデフォルトで有効になっていることに注意してください。否定形式の--no-create-reflog
は、以前の--create-reflog
を上書きするだけで、現在core.logAllRefUpdates
の設定を否定することはありません。 -f
--force
-
<branch-name> が既に存在する場合でも、<branch-name> を <start-point> にリセットします。
-f
がない場合、git
branch
は既存のブランチの変更を拒否します。-d
(または--delete
) と組み合わせると、マージの状態や有効なコミットを指しているかどうかに関わらず、ブランチの削除を許可します。-m
(または--move
) と組み合わせると、新しいブランチ名が既に存在する場合でもブランチの名前変更を許可します。-c
(または--copy
) も同様です。git
branch
-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
-
ブランチのソートとフィルタリングは大文字小文字を区別しません。
--omit-empty
-
フォーマットが空文字列に展開されるフォーマットされた ref の後に改行を出力しません。
--column
[=
<options>]--no-column
-
ブランチリストをカラムで表示します。オプションの構文については、設定変数
column.branch
を参照してください。オプションなしの--column
と--no-column
は、それぞれalways
とnever
に相当します。このオプションは、非詳細モードでのみ適用可能です。
--sort=
<key>-
<key> に基づいてソートします。値の降順でソートするには
-
をプレフィックスとして付けます。--sort=
<key> オプションを複数回使用できます。その場合、最後のキーが主キーになります。サポートされているキーは、git-for-each-ref[1] のものと同じです。ソート順は、branch.sort
変数に設定された値が存在する場合はそれにデフォルト設定され、そうでない場合は完全な refname (refs/...
プレフィックスを含む) に基づいてソートされます。これにより、デタッチされたHEAD
(存在する場合) が最初にリストされ、次にローカルブランチ、最後にリモートトラッキングブランチがリストされます。git-config[1] を参照してください。 -r
--remotes
-
リモートトラッキングブランチを一覧表示または削除します (
-d
と一緒に使用する場合)。オプションのパターンと一致させるには--list
と組み合わせます。 -a
--all
-
リモートトラッキングブランチとローカルブランチの両方を一覧表示します。オプションのパターンと一致させるには
--list
と組み合わせます。 -l
--list
-
ブランチを一覧表示します。オプションの <pattern>... (例:
git
branch
--list
maint-*'
) を指定すると、パターンに一致するブランチのみを一覧表示します。 --show-current
-
現在のブランチの名前を出力します。デタッチされた
HEAD
状態では、何も出力されません。 -v
-vv
--verbose
-
リストモードの場合、各ヘッドの sha1 とコミット件名行を、アップストリームブランチとの関係 (存在する場合) とともに表示します。2回指定すると、リンクされたワークツリーのパス (存在する場合) とアップストリームブランチの名前も表示します (
git
remote
show
<remote> も参照)。現在のワークツリーのHEAD
のパスは表示されないことに注意してください (常に現在のディレクトリになります)。 -q
--quiet
-
ブランチの作成または削除時に、エラー以外のメッセージを抑制して、より静かにします。
--abbrev=
<n>-
コミットオブジェクト名を表示する詳細リストで、オブジェクトを一意に参照する、少なくとも <n> 桁の16進数からなる最短のプレフィックスを表示します。デフォルト値は 7 で、
core.abbrev
設定オプションでオーバーライドできます。 --no-abbrev
-
出力を省略せずに、完全な sha1 を一覧表示します。
-t
--track
[=
(direct
|inherit
)]-
新しいブランチを作成するときに、新しいブランチの「アップストリーム」追跡設定を行うために
branch.
<name>.remote
とbranch.
<name>.merge
設定エントリを設定します。この設定により、git はgit
status
とgit
branch
-v
で2つのブランチ間の関係を表示するようになります。さらに、新しいブランチがチェックアウトされているときに、引数なしでgit
pull
をアップストリームからプルするように指示します。正確なアップストリームブランチは、オプションの引数に応じて選択されます。
-t
、--track
、または--track=direct
は、開始点ブランチ自体をアップストリームとして使用することを意味します。--track=inherit
は、開始点ブランチのアップストリーム設定をコピーすることを意味します。branch.autoSetupMerge
設定変数は、git
switch
、git
checkout
、およびgit
branch
が--track
も--no-track
も指定されていない場合にどのように動作するかを指定します。デフォルトオプションの
true
は、開始点がリモートトラッキングブランチである場合、常に--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
設定変数が設定されている場合でも、「アップストリーム」設定を行いません。 --recurse-submodules
-
このオプションは実験的です!
submodule.propagateBranches
が有効な場合、現在のコマンドがサブモジュールに再帰するようにします。git-config[1] のsubmodule.propagateBranches
を参照してください。現在、ブランチの作成のみがサポートされています。ブランチ作成で使用する場合、スーパープロジェクトの <start-point> にあるスーパープロジェクトとすべてのサブモジュールに新しいブランチ <branch-name> が作成されます。サブモジュールでは、ブランチはスーパープロジェクトの <start-point> にあるサブモジュールコミットを指しますが、ブランチの追跡情報はサブモジュールのブランチとリモートに基づいて設定されます。例えば、
git
branch
--recurse-submodules
topic
origin/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>-
表示されているブランチ ref とそれが指すオブジェクトから
%
(fieldname
) を補間する文字列です。<format> は git-for-each-ref[1] と同じです。 - <branch-name>
-
作成または削除するブランチの名前。新しいブランチ名は、git-check-ref-format[1] で定義されているすべてのチェックに合格する必要があります。これらのチェックの一部は、ブランチ名に許可される文字を制限する場合があります。
- <start-point>
-
新しいブランチヘッドは、このコミットを指します。ブランチ名、コミット ID、またはタグとして指定できます。このオプションが省略された場合、代わりに現在の
HEAD
が使用されます。 - <old-branch>
-
既存のブランチの名前。このオプションが省略された場合、代わりに現在のブランチの名前が使用されます。
- <new-branch>
-
既存のブランチの新しい名前。<branch-name> と同じ制限が適用されます。
設定
pager.branch
は、ブランチをリスト表示するとき、つまり --list
が使用されるか暗示される場合にのみ尊重されます。デフォルトでは、ページャーを使用します。git-config[1] を参照してください。
このセクションのこの行より上のすべての内容は、git-config[1] ドキュメントには含まれていません。以下の内容は、そちらにあるものと同じです。
branch.autoSetupMerge
-
git
branch
、git
switch
、およびgit
checkout
に、git-pull[1] が開始点ブランチから適切にマージするように新しいブランチを設定するよう指示します。このオプションが設定されていなくても、--track
および--no-track
オプションを使用してブランチごとにこの動作を選択できることに注意してください。このオプションのデフォルトはtrue
です。有効な設定は次のとおりです。 branch.autoSetupRebase
-
git
branch
、git
switch
、またはgit
checkout
で他のブランチを追跡する新しいブランチが作成されるとき、この変数は Git に、git
pull
が実行されたときに、マージではなくリベースするようにプルを設定するよう指示します (branch.
<name>.rebase
を参照)。有効な設定は次のとおりです。別のブランチを追跡するようにブランチを設定する方法の詳細は、
branch.autoSetupMerge
を参照してください。このオプションのデフォルトはnever
です。 branch.sort
-
この変数は、git-branch[1] によって表示されるブランチのソート順序を制御します。
--sort=
<value> オプションが指定されていない場合、この変数の値がデフォルトとして使用されます。有効な値については、git-for-each-ref[1] のフィールド名を参照してください。 branch.
<name>.remote
-
ブランチ <name> にいる場合、
git
fetch
およびgit
push
に、どこからフェッチし、どこにプッシュするかを指示します。プッシュするリモートはremote.pushDefault
(すべてのブランチ) でオーバーライドできます。現在のブランチにプッシュするリモートは、branch.
<name>.pushRemote
でさらにオーバーライドできます。リモートが設定されていない場合、またはブランチにいない場合でリポジトリに複数のリモートが定義されている場合、フェッチのデフォルトはorigin
、プッシュのデフォルトはremote.pushDefault
になります。さらに、.
(ピリオド) は現在のローカルリポジトリ (ドットリポジトリ) です。branch.
<name>.merge
の最終注意を参照してください。 branch.
<name>.pushRemote
-
ブランチ <name> にいる場合、プッシュのために
branch.
<name>.remote
をオーバーライドします。また、ブランチ <name> からのプッシュのためにremote.pushDefault
をオーバーライドします。ある場所 (例: アップストリーム) からプルし、別の場所 (例: 自分の公開リポジトリ) にプッシュする場合、すべてのブランチにプッシュするリモートを指定するためにremote.pushDefault
を設定し、特定のブランチのオーバーライドにはこのオプションを使用します。 branch.
<name>.merge
-
branch.
<name>.remote
とともに、指定されたブランチのアップストリームブランチを定義します。git
fetch
/git
pull
/git
rebase
にどのブランチをマージするかを指示し、git
push
にも影響を与える可能性があります (push.default
を参照)。ブランチ <name> にいる場合、git
fetch
にFETCH_HEAD
でマージ用にマークされるデフォルトの refspec を指示します。値は refspec のリモート部分と同様に扱われ、branch.
<name>.remote
で与えられたリモートからフェッチされる ref と一致する必要があります。マージ情報はgit
pull
(最初にgit
fetch
を呼び出す) によって、マージのデフォルトブランチを検索するために使用されます。このオプションがない場合、git
pull
はフェッチされた最初の refspec をマージするようデフォルト設定されます。複数の値を指定すると、オクトパスマージが行われます。git
pull
を設定して、ローカルリポジトリの別のブランチから <name> にマージしたい場合は、branch.<name>.merge を目的のブランチに設定し、branch.
<name>.remote
に相対パス設定.
(ピリオド) を使用できます。 branch.
<name>.mergeOptions
-
ブランチ <name> へのマージのデフォルトオプションを設定します。構文とサポートされるオプションは git-merge[1] と同じですが、空白文字を含むオプション値は現在サポートされていません。
branch.
<name>.rebase
-
true の場合、
git
pull
が実行されたときに、デフォルトのリモートからデフォルトブランチをマージする代わりに、フェッチされたブランチの上にブランチ <name> をリベースします。ブランチに特化しない方法でこれを行うには、pull.rebase
を参照してください。merges
(または単にm
) の場合、ローカルマージコミットをリベースに含めるように--rebase-merges
オプションをgit
rebase
に渡します (git-rebase[1] で詳細を参照)。値が
interactive
(または単にi
) の場合、リベースは対話モードで実行されます。注記: これは危険な操作である可能性があります。意味を理解しない限り、使用しないでください (git-rebase[1] で詳細を参照)。
branch.
<name>.description
-
ブランチの説明。
git
branch
--edit-description
で編集できます。ブランチの説明は、format-patch
のカバーレターまたはrequest-pull
の要約に自動的に追加されます。
例
- 既知のタグから開発を開始する
-
$ 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 -b my2.6.14 v2.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」を削除します。これらを再度フェッチしないように設定しない限り、次の
git
fetch
またはgit
pull
でこれらは再び作成されます。git-fetch[1] を参照してください。 -
「master」ブランチ (または現在チェックアウトされているブランチ) にテストブランチのすべてのコミットが含まれていない場合でも、「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] を参照してください。
-
パターンは通常、引用符で囲む必要があります。
注記
すぐに切り替えたいブランチを作成する場合は、git
switch
コマンドとその -c
オプションを使用して、同じことを1つのコマンドで実行する方が簡単です。
オプション --contains
、--no-contains
、--merged
、および --no-merged
は、関連していますが異なる4つの目的を果たします。
-
--contains
<commit> は、<commit> を含むすべてのブランチを見つけるために使用されます。これらのブランチは指定された <commit> を含むため、<commit> がリベースまたは修正される場合に特別な注意が必要になります。 -
--no-contains
<commit> はその逆、つまり指定された <commit> を含まないブランチです。 -
--merged
は、安全に削除できるすべてのブランチを見つけるために使用されます。これらのブランチはHEAD
に完全に含まれているためです。 -
--no-merged
は、HEAD
に完全に含まれていないため、HEAD
にマージする候補となるブランチを見つけるために使用されます。
複数の --contains
フィルターと --no-contains
フィルターを組み合わせると、--contains
コミットの少なくとも1つを含み、--no-contains
コミットを1つも含まない参照のみが表示されます。
複数の --merged
フィルターと --no-merged
フィルターを組み合わせると、--merged
コミットの少なくとも1つから到達可能であり、--no-merged
コミットのいずれからも到達できない参照のみが表示されます。
関連項目
git-check-ref-format[1]、git-fetch[1]、git-remote[1]、Git User’s Manual の「履歴を理解する: ブランチとは?」
GIT
git[1]スイートの一部