1037

git branch -aリモートブランチとローカルブランチの両方を示しています。

git branch -rリモートブランチを示しています。

ローカルブランチだけをリストする方法はありますか?

4

11 に答える 11

1563

オプションgit branchなし。

マンページから:

引数がない場合、既存のブランチが一覧表示され、現在のブランチがアスタリスクで強調表示されます。

于 2012-09-11T13:23:39.667 に答える
240

単なるコマンド

git branch
于 2012-09-11T13:23:28.543 に答える
99

git branch -a-すべてのブランチ。

git branch -r-リモートブランチのみ。

git branch -l git branch-ローカルブランチのみ。

于 2018-05-14T12:23:03.130 に答える
40

それを行う最も簡単な方法の1つは

git for-each-ref --format='%(refname:short)' refs/heads/

これはスクリプトでも完全に機能します。

于 2016-10-19T04:15:41.820 に答える
35

先頭のアスタリスクが問題になる場合は、次のようにパイプgit branchします

git branch | awk -F ' +' '! /\(no branch\)/ {print $2}'

これにより、ヘッドを取り外したときに表示される「(分岐なし)」行も削除されます。

于 2013-08-21T13:49:37.803 に答える
16

同じ名前の元にリモートブランチがないローカルブランチを一覧表示する方法は次のとおりです。

git branch | sed 's|* |  |' | sort > local
git branch -r | sed 's|origin/||' | sort > remote
comm -23 local remote
于 2017-01-13T16:13:23.630 に答える
12

ローカルブランチだけのリストを取得する他の方法は次のとおりです。

git branch -a | grep -v 'remotes'
于 2015-11-13T14:39:33.963 に答える
6

ローカルのみのブランチを削除する方法についての投稿には、すばらしい答えがあります。その中で、フェローはローカルブランチを一覧表示するコマンドを作成します。

git branch -vv | cut -c 3- | awk '$3 !~/\[/ { print $1 }'

答えには、このコマンドがどのように導き出されたかについての素晴らしい説明があるので、その投稿を読んでみることをお勧めします。

于 2018-05-22T18:05:51.353 に答える
5

@gertvdijkの答えを補足するために、誰かがすぐに役立つ場合に備えて、スクリーンショットをいくつか追加します。

以下のコマンドを実行すると、gitbashシェルで次のようになります。

git branch

このコマンド(パラメーターなし)は、すべてのローカルブランチを表示します。現在チェックアウトされている現在のブランチは、非常に直感的なアスタリスク(*)プレフィックスとともに、異なる色(緑)で表示されます。

ここに画像の説明を入力してください

( allの-a略)パラメータを使用して、リモートブランチを含むすべてのブランチを表示しようとすると、次のようになります。

git branch -a

次に、まだチェックアウトされていないリモートブランチも、異なる(赤)色で表示されます。

ここに画像の説明を入力してください

于 2018-01-11T23:04:41.167 に答える
0
git show-ref --heads

@gertvdijkの答えは最も簡潔でエレガントですが、地元の支店refs/heads/*相当するアイデアを理解するのに役立ったので、ここに残したいと思いました。

ほとんどの場合、refs/heads/masterrefは、.git/refs/heads/masterローカルマスターブランチの現在の状態を表すgitオブジェクトを指すgit commitハッシュを含むファイルであるため、下の各ファイル.git/refs/heads/*はローカルブランチを表します。

于 2021-02-13T22:04:34.287 に答える
0

Powershellユーザーは、Compare-Objectコマンドレットを使用してこのようなことを行うことができます。コードが自明であることを願っています。

function match-branch {
    $localBranches = ((git branch -l) -replace "\*", "") -replace " ", ""
    $remoteBranches = (((git branch -r) -replace "\*", "") -replace " ", "") -replace "origin/", ""
    Compare-Object -ReferenceObject $localBranches -DifferenceObject $remoteBranches -IncludeEqual
    | Select-Object @{Label = "branch"; Expression = { $_.InputObject } },
    @{Label = ”both”; Expression = { $_.SideIndicator -eq "==" } },
    @{Label = ”remoteOnly”; Expression = { $_.SideIndicator -eq "=>" } }, 
    @{Label = ”localOnly”; Expression = { $_.SideIndicator -eq "<=" } }
}
  • 出力例
branch        both remoteOnly localOnly
------        ---- ---------- ---------
master        True      False     False
HEAD->master False       True     False
renamed      False       True     False
于 2021-07-10T02:48:32.953 に答える