セットアップと設定
プロジェクトの取得と作成
基本スナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
Eメール
外部システム
サーバー管理
- 2.44.1 → 2.49.0 変更なし
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.6 変更なし
-
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] <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>]
説明
--list
が指定された場合、またはオプション以外の引数がない場合、既存のブランチが一覧表示されます。現在のブランチは緑色で強調表示され、アスタリスクでマークされます。リンクされたワークツリーでチェックアウトされているブランチはシアン色で強調表示され、プラス記号でマークされます。オプション -r
はリモート追跡ブランチを一覧表示させ、オプション -a
はローカルブランチとリモートブランチの両方を表示します。
<pattern>
が指定された場合、それは一致するブランチに出力を制限するためのシェルワイルドカードとして使用されます。複数のパターンが指定された場合、いずれかのパターンに一致するブランチが表示されます。
<pattern>
を指定する場合は、--list
を使用する必要があります。そうしないと、コマンドがブランチ作成として解釈される可能性があります。
--contains
を使用すると、指定されたコミットを含むブランチのみが表示されます(言い換えれば、先端コミットが指定されたコミットの子孫であるブランチ)。--no-contains
はこれを反転させます。--merged
を使用すると、指定されたコミットにマージされたブランチのみが一覧表示されます(つまり、先端コミットが指定されたコミットから到達可能なブランチ)。--no-merged
を使用すると、指定されたコミットにマージされていないブランチのみが一覧表示されます。<commit>
引数が省略された場合、デフォルトで HEAD
(つまり、現在のブランチの先端)になります。
コマンドの2番目の形式では、現在の HEAD
、または指定された場合は <start-point>
を指す <branchname>
という名前の新しいブランチヘッドを作成します。特殊なケースとして、<start-point>
では、マージベースが正確に1つだけある場合、A
と B
のマージベースのショートカットとして "A...B"
を使用できます。A
と B
のうち、最大1つを省略することができ、その場合はデフォルトで HEAD
になります。
これは新しいブランチを作成しますが、作業ツリーをそのブランチに切り替えません。新しいブランチに切り替えるには、「git switch <newbranch>」を使用してください。
ローカルブランチがリモート追跡ブランチから開始されると、Gitはブランチ(具体的には branch.<name>.remote
および branch.<name>.merge
の設定エントリ)を設定し、git pull がリモート追跡ブランチから適切にマージするようにします。この動作は、グローバルな branch.autoSetupMerge
設定フラグを介して変更できます。この設定は、--track
および --no-track
オプションを使用して上書きでき、後で git branch --set-upstream-to
を使用して変更することもできます。
-m
または -M
オプションを使用すると、<oldbranch>
は <newbranch>
に名前が変更されます。<oldbranch>
に対応するリフロッグがあった場合、それは <newbranch>
に合わせて名前が変更され、ブランチの名前変更を記憶するためのリフロッグエントリが作成されます。<newbranch>
が存在する場合、強制的に名前変更を行うには -M
を使用する必要があります。
-c
および -C
オプションは、-m
および -M
と全く同じセマンティクスを持ちますが、ブランチが名前変更される代わりに、設定とリフロッグとともに新しい名前にコピーされます。
-d
または -D
オプションを使用すると、<branchname>
が削除されます。複数のブランチを削除のために指定できます。ブランチに現在リフロッグがある場合、そのリフロッグも削除されます。
リモート追跡ブランチを削除するには、-r
を -d
と一緒に使用します。リモート追跡ブランチを削除するのは、それらがリモートリポジトリに存在しない場合、または git fetch がそれらを再度フェッチしないように設定されている場合にのみ意味があることに注意してください。すべての古いリモート追跡ブランチをクリーンアップする方法については、git-remote[1] の prune サブコマンドも参照してください。
オプション
- -d
- --delete
-
ブランチを削除します。ブランチは、そのアップストリームブランチに完全にマージされているか、
--track
または--set-upstream-to
でアップストリームが設定されていない場合はHEAD
にマージされている必要があります。 - -D
-
--delete --force
のショートカット。 - --create-reflog
-
ブランチのリフロッグを作成します。これにより、ブランチ参照に行われたすべての変更の記録が有効になり、「<branchname>@{yesterday}」のような日付ベースのsha1表現を使用できるようになります。非ベアリポジトリでは、リフロッグは通常
core.logAllRefUpdates
設定オプションによってデフォルトで有効になっていることに注意してください。否定形式の--no-create-reflog
は、以前の--create-reflog
を上書きするだけで、現在のところcore.logAllRefUpdates
の設定を無効にするものではありません。 - -f
- --force
-
<branchname>
が既に存在する場合でも、<branchname>
を<start-point>
にリセットします。-f
なしでは、git branch は既存のブランチの変更を拒否します。-d
(または--delete
) と組み合わせると、マージ状態にかかわらず、また有効なコミットを指しているかどうかにかかわらず、ブランチの削除を許可します。-m
(または--move
) と組み合わせると、新しいブランチ名が既に存在する場合でもブランチの名前変更を許可します。これは-c
(または--copy
) にも同様に適用されます。git branch -f <branchname> [<start-point>] は、-f を付けても、同じリポジトリにリンクされた別のワークツリーでチェックアウトされている既存のブランチ
<branchname>
を変更することを拒否することに注意してください。 - -m
- --move
-
ブランチを、その設定とリフロッグとともに移動/名前変更します。
- -M
-
--move --force
のショートカット。 - -c
- --copy
-
ブランチを、その設定とリフロッグとともにコピーします。
- -C
-
--copy --force
のショートカット。 - --color[=<when>]
-
現在、ローカル、リモート追跡ブランチを強調表示するためにブランチに色を付けます。値は always (デフォルト)、never、または auto のいずれかでなければなりません。
- --no-color
-
設定ファイルで出力に色を付けるようにデフォルトで設定されている場合でも、ブランチの色をオフにします。
--color=never
と同じです。 - -i
- --ignore-case
-
ブランチのソートとフィルタリングは大文字と小文字を区別しません。
- --omit-empty
-
フォーマットされた参照で、フォーマットが空文字列に展開される場合に、改行を印刷しません。
- --column[=<options>]
- --no-column
-
ブランチリストを列で表示します。オプションの構文については、設定変数
column.branch
を参照してください。オプションなしの--column
と--no-column
は、それぞれ always と never に相当します。このオプションは非冗長モードでのみ適用されます。
- -r
- --remotes
-
リモート追跡ブランチを一覧表示または削除します(-d と併用する場合)。
--list
と組み合わせて、オプションのパターンに一致させます。 - -a
- --all
-
リモート追跡ブランチとローカルブランチの両方を一覧表示します。
--list
と組み合わせて、オプションのパターンに一致させます。 - -l
- --list
-
ブランチを一覧表示します。オプションの
<pattern>...
(例:git branch --list 'maint-*'
)を使用すると、パターンに一致するブランチのみを一覧表示します。 - --show-current
-
現在のブランチの名前を出力します。detached 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 status
およびgit branch -v
で2つのブランチ間の関係が表示されるようGitに指示されます。さらに、新しいブランチがチェックアウトされたときに、引数なしのgit pull
がアップストリームからプルするように指示されます。正確なアップストリームブランチは、オプションの引数に応じて選択されます。
-t
、--track
、または--track=direct
は、開始点ブランチ自体をアップストリームとして使用することを意味します。--track=inherit
は、開始点ブランチのアップストリーム設定をコピーすることを意味します。branch.autoSetupMerge 設定変数は、
--track
と--no-track
のどちらも指定されていない場合に、git switch
、git checkout
、およびgit branch
がどのように動作すべきかを指定します。デフォルトオプションの
true
は、開始点がリモート追跡ブランチである場合、常に--track=direct
が与えられたかのように動作します。false
は、--no-track
が与えられたかのように動作します。always
は、--track=direct
が与えられたかのように動作します。inherit
は、--track=inherit
が与えられたかのように動作します。simple
は、開始点がリモート追跡ブランチであり、新しいブランチがリモートブランチと同じ名前である場合にのみ、--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>
内のすべてのサブモジュールに新しいブランチ<branchname>
が作成されます。サブモジュールでは、ブランチはスーパープロジェクトの<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>
-
<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>
-
新しいブランチヘッドはこのコミットを指します。ブランチ名、コミットID、またはタグとして指定できます。このオプションが省略された場合、現在のHEADが代わりに使用されます。
- <oldbranch>
-
既存のブランチの名前。このオプションが省略された場合、現在のブランチの名前が代わりに使用されます。
- <newbranch>
-
既存のブランチの新しい名前。
<branchname>
と同じ制限が適用されます。 - --sort=<key>
-
指定されたキーに基づいてソートします。値の降順でソートするには
-
をプレフィックスとして付けます。--sort=<key> オプションを複数回使用できます。その場合、最後のキーが主キーになります。サポートされるキーはgit for-each-ref
と同じです。ソート順は、branch.sort
変数に設定された値が存在する場合はそれに従い、存在しない場合はフルリファレンス名(refs/...
プレフィックスを含む)に基づいてソートされます。これにより、detached HEAD(存在する場合)が最初に、次にローカルブランチ、最後にリモート追跡ブランチがリストされます。git-config[1] を参照してください。 - --points-at <object>
-
指定されたオブジェクトのブランチのみを一覧表示します。
- --format <format>
-
表示されているブランチ参照とそれが指すオブジェクトから
%(fieldname)
を補間する文字列です。フォーマットは git-for-each-ref[1] のものと同じです。
設定
pager.branch
はブランチを一覧表示する場合、つまり --list
が使用されるか暗示される場合にのみ尊重されます。デフォルトではページャを使用します。git-config[1] を参照してください。
このセクションのこの行より上のすべての内容は、git-config[1] のドキュメントからは含まれていません。以下の内容は、そこにあるものと同じです。
- branch.autoSetupMerge
-
git branch、git switch、および git checkout に、新しいブランチをセットアップし、git-pull[1] が開始点ブランチから適切にマージするように指示します。このオプションが設定されていなくても、
--track
および--no-track
オプションを使用してブランチごとにこの動作を選択できることに注意してください。有効な設定は次のとおりです:false
— 自動セットアップは行われません;true
— 開始点がリモート追跡ブランチである場合に自動セットアップが行われます;always
— 開始点がローカルブランチまたはリモート追跡ブランチのいずれかである場合に自動セットアップが行われます;inherit
— 開始点に追跡設定がある場合、それが新しいブランチにコピーされます;simple
— 開始点がリモート追跡ブランチであり、新しいブランチがリモートブランチと同じ名前である場合にのみ自動セットアップが行われます。このオプションのデフォルトは true です。 - branch.autoSetupRebase
-
別のブランチを追跡する新しいブランチが git branch、git switch、または git checkout で作成された場合、この変数は 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] のフィールド名を参照してください。
- 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> にいるとき、FETCH_HEAD でマージされるようにマークされるデフォルトの refspec を git fetch に指示します。値は refspec のリモート部分のように扱われ、"branch.<name>.remote" で与えられたリモートからフェッチされた参照と一致する必要があります。マージ情報は 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) の場合、ローカルのマージコミットがリベースに含まれるように、git rebase に--rebase-merges
オプションを渡します(詳細については 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」という単一のステップに結合できます。
-
- 不要なブランチを削除する
-
$ 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] を参照してください。
-
パターンは通常、クォーティングが必要です。
注記
すぐに切り替えたいブランチを作成している場合、-c
オプションを付けた「git switch」コマンドを使用する方が、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
フィルターを組み合わせる場合、--contains
コミットの少なくとも1つを含み、かつ --no-contains
コミットのいずれも含まない参照のみが表示されます。
複数の --merged
および --no-merged
フィルターを組み合わせる場合、--merged
コミットの少なくとも1つから到達可能であり、かつ --no-merged
コミットのいずれからも到達できない参照のみが表示されます。
関連項目
git-check-ref-format[1]、git-fetch[1]、git-remote[1]、Gitユーザーマニュアルの「履歴の理解: ブランチとは?」。
GIT
git[1] スイートの一部