git branch -a
リモートブランチとローカルブランチの両方を示しています。
git branch -r
リモートブランチを示しています。
ローカルブランチだけをリストする方法はありますか?
git branch -a
リモートブランチとローカルブランチの両方を示しています。
git branch -r
リモートブランチを示しています。
ローカルブランチだけをリストする方法はありますか?
単なるコマンド
git branch
git branch -a
-すべてのブランチ。
git branch -r
-リモートブランチのみ。
git branch -l
git branch
-ローカルブランチのみ。
それを行う最も簡単な方法の1つは
git for-each-ref --format='%(refname:short)' refs/heads/
これはスクリプトでも完全に機能します。
先頭のアスタリスクが問題になる場合は、次のようにパイプgit branch
します
git branch | awk -F ' +' '! /\(no branch\)/ {print $2}'
これにより、ヘッドを取り外したときに表示される「(分岐なし)」行も削除されます。
同じ名前の元にリモートブランチがないローカルブランチを一覧表示する方法は次のとおりです。
git branch | sed 's|* | |' | sort > local
git branch -r | sed 's|origin/||' | sort > remote
comm -23 local remote
ローカルブランチだけのリストを取得する他の方法は次のとおりです。
git branch -a | grep -v 'remotes'
ローカルのみのブランチを削除する方法についての投稿には、すばらしい答えがあります。その中で、フェローはローカルブランチを一覧表示するコマンドを作成します。
git branch -vv | cut -c 3- | awk '$3 !~/\[/ { print $1 }'
答えには、このコマンドがどのように導き出されたかについての素晴らしい説明があるので、その投稿を読んでみることをお勧めします。
@gertvdijkの答えを補足するために、誰かがすぐに役立つ場合に備えて、スクリーンショットをいくつか追加します。
以下のコマンドを実行すると、gitbashシェルで次のようになります。
git branch
このコマンド(パラメーターなし)は、すべてのローカルブランチを表示します。現在チェックアウトされている現在のブランチは、非常に直感的なアスタリスク(*)プレフィックスとともに、異なる色(緑)で表示されます。
( allの-a
略)パラメータを使用して、リモートブランチを含むすべてのブランチを表示しようとすると、次のようになります。
git branch -a
次に、まだチェックアウトされていないリモートブランチも、異なる(赤)色で表示されます。
git show-ref --heads
@gertvdijkの答えは最も簡潔でエレガントですが、地元の支店refs/heads/*
に相当するアイデアを理解するのに役立ったので、ここに残したいと思いました。
ほとんどの場合、refs/heads/master
refは、.git/refs/heads/master
ローカルマスターブランチの現在の状態を表すgitオブジェクトを指すgit commitハッシュを含むファイルであるため、下の各ファイル.git/refs/heads/*
はローカルブランチを表します。
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