セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 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
概要
gitbranch[--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>…]gitbranch[--track[=(direct|inherit)] |--no-track] [-f] [--recurse-submodules] <branch-name> [<start-point>]gitbranch(--set-upstream-to=<upstream>|-u<upstream>) [<branch-name>]gitbranch--unset-upstream[<branch-name>]gitbranch(-m|-M) [<old-branch>] <new-branch>gitbranch(-c|-C) [<old-branch>] <new-branch>gitbranch(-d|-D) [-r] <branch-name>…gitbranch--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がない場合、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-
ブランチのソートとフィルタリングは大文字小文字を区別しません。
--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>... (例:
gitbranch--listmaint-*') を指定すると、パターンに一致するブランチのみを一覧表示します。 --show-current-
現在のブランチの名前を出力します。デタッチされた
HEAD状態では、何も出力されません。 -v-vv--verbose-
リストモードの場合、各ヘッドの sha1 とコミット件名行を、アップストリームブランチとの関係 (存在する場合) とともに表示します。2回指定すると、リンクされたワークツリーのパス (存在する場合) とアップストリームブランチの名前も表示します (
gitremoteshow<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 はgitstatusとgitbranch-vで2つのブランチ間の関係を表示するようになります。さらに、新しいブランチがチェックアウトされているときに、引数なしでgitpullをアップストリームからプルするように指示します。正確なアップストリームブランチは、オプションの引数に応じて選択されます。
-t、--track、または--track=directは、開始点ブランチ自体をアップストリームとして使用することを意味します。--track=inheritは、開始点ブランチのアップストリーム設定をコピーすることを意味します。branch.autoSetupMerge設定変数は、gitswitch、gitcheckout、およびgitbranchが--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> にあるサブモジュールコミットを指しますが、ブランチの追跡情報はサブモジュールのブランチとリモートに基づいて設定されます。例えば、
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>-
表示されているブランチ 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-
gitbranch、gitswitch、およびgitcheckoutに、git-pull[1] が開始点ブランチから適切にマージするように新しいブランチを設定するよう指示します。このオプションが設定されていなくても、--trackおよび--no-trackオプションを使用してブランチごとにこの動作を選択できることに注意してください。このオプションのデフォルトはtrueです。有効な設定は次のとおりです。 branch.autoSetupRebase-
gitbranch、gitswitch、またはgitcheckoutで他のブランチを追跡する新しいブランチが作成されるとき、この変数は Git に、gitpullが実行されたときに、マージではなくリベースするようにプルを設定するよう指示します (branch.<name>.rebaseを参照)。有効な設定は次のとおりです。別のブランチを追跡するようにブランチを設定する方法の詳細は、
branch.autoSetupMergeを参照してください。このオプションのデフォルトはneverです。 branch.sort-
この変数は、git-branch[1] によって表示されるブランチのソート順序を制御します。
--sort=<value> オプションが指定されていない場合、この変数の値がデフォルトとして使用されます。有効な値については、git-for-each-ref[1] のフィールド名を参照してください。 branch.<name>.remote-
ブランチ <name> にいる場合、
gitfetchおよびgitpushに、どこからフェッチし、どこにプッシュするかを指示します。プッシュするリモートは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とともに、指定されたブランチのアップストリームブランチを定義します。gitfetch/gitpull/gitrebaseにどのブランチをマージするかを指示し、gitpushにも影響を与える可能性があります (push.defaultを参照)。ブランチ <name> にいる場合、gitfetchにFETCH_HEADでマージ用にマークされるデフォルトの refspec を指示します。値は refspec のリモート部分と同様に扱われ、branch.<name>.remoteで与えられたリモートからフェッチされる ref と一致する必要があります。マージ情報はgitpull(最初にgitfetchを呼び出す) によって、マージのデフォルトブランチを検索するために使用されます。このオプションがない場合、gitpullはフェッチされた最初の refspec をマージするようデフォルト設定されます。複数の値を指定すると、オクトパスマージが行われます。gitpullを設定して、ローカルリポジトリの別のブランチから <name> にマージしたい場合は、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の要約に自動的に追加されます。
例
- 既知のタグから開発を開始する
-
$ 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」を削除します。これらを再度フェッチしないように設定しない限り、次の
gitfetchまたはgitpullでこれらは再び作成されます。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]スイートの一部