812

を試しましgit branch -rたが、ローカルで追跡したリモート ブランチのみが一覧表示されます。持っていないもののリストを見つけるにはどうすればよいですか? (コマンドがすべてのリモート ブランチを一覧表示するか、追跡されていないブランチのみを一覧表示するかは、私にとっては問題ではありません。)

4

20 に答える 20

1051

ここの訪問者の大多数[1]にとって、 「Git 1.7+ ですべてのリモート ブランチを一覧表示するにはどうすればよいですか?」という質問に対する最も正確で簡単な回答です。は:

git branch -r

少数派の場合、[1] git branch -rは機能しません。git branch -rうまくいかない場合は、次を試してください。

git ls-remote --heads <remote-name>

git branch -rうまくいかない場合は、おそらくCascabelデフォルトのrefspecを変更したため、すべてのブランチをフェッチしないでください」git fetchgit remote updateremote言っているようです。


[1] 2018 年 2 月にこの脚注を書いた時点で、私はコメントを見て、git branch -r大部分 (約 90%、つまり140のうち125 ) で機能することを確認しました。

git branch -rうまくいかない場合は、この回答に従ってチェックにワイルドカードgit config --get remote.origin.fetch( ) が含まれていることを確認してください*

于 2010-08-12T21:44:00.903 に答える
203

remote showローカルで追跡されていないブランチや、まだフェッチされていないブランチも含め、リモート上のすべてのブランチを表示します。

git remote show <remote-name>

また、ローカル リポジトリに関連するブランチのステータスを表示しようとします。

> git remote show origin
* remote origin
  Fetch URL: C:/git/.\remote_repo.git
  Push  URL: C:/git/.\remote_repo.git
  HEAD branch: master
  Remote branches:
    branch_that_is_not_even_fetched new (next fetch will store in remotes/origin)
    branch_that_is_not_tracked      tracked
    branch_that_is_tracked          tracked
    master                          tracked
  Local branches configured for 'git pull':
    branch_that_is_tracked merges with remote branch_that_is_tracked
    master                 merges with remote master
  Local refs configured for 'git push':
    branch_that_is_tracked pushes to branch_that_is_tracked (fast-forwardable)
    master                 pushes to master                 (up to date)
于 2013-03-26T06:12:16.407 に答える
56

Using を使用git branch -rすると、すべてのリモート ブランチがgit branch -a一覧表示され、ローカルおよびリモートのすべてのブランチが一覧表示されます。ただし、これらのリストは時代遅れになります。これらのリストを最新の状態に保つには、次を実行します

git remote update --prune

これにより、リモートからのすべての新しいブランチ リストでローカル ブランチ リストが更新され、存在しなくなったブランチ リストが削除されます。--prune を指定せずにこの更新コマンドを実行すると、新しいブランチが取得されますが、リモート上にないブランチは削除されません。

リモートを指定することでこの更新を高速化できます。そうしないと、追加したすべてのリモートから更新がプルされます。

git remote update --prune origin
于 2014-04-28T18:34:53.187 に答える
55
git branch -a | grep remotes/*
于 2010-08-12T20:48:25.920 に答える
30

しかし

git branch -ar

するべきです。

于 2013-03-24T11:25:27.270 に答える
28

Git ブランチ - リモート ブランチ

git ls-remote

Git ドキュメント

于 2016-08-14T14:35:42.523 に答える
22

You also may do git fetch followed by a git branch -r. Without fetch you will not see the most current branches.

于 2014-03-04T09:22:30.653 に答える
10

Git Bashでは、以下を使用できます。

git branch -a
于 2017-12-12T13:13:01.547 に答える
8

実行するのに最適なコマンドはgit remote show [remote]. これにより、リモートとローカル、追跡対象と追跡対象外のすべてのブランチが表示されます。

オープン ソース プロジェクトの例を次に示します。

> git remote show origin
* remote origin
  Fetch URL: https://github.com/OneBusAway/onebusaway-android
  Push  URL: https://github.com/OneBusAway/onebusaway-android
  HEAD branch: master
  Remote branches:
    amazon-rc2                   new (next fetch will store in remotes/origin)
    amazon-rc3                   new (next fetch will store in remotes/origin)
    arrivalStyleBDefault         new (next fetch will store in remotes/origin)
    develop                      tracked
    master                       tracked
    refs/remotes/origin/branding stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    develop merges with remote develop
    master  merges with remote master
  Local refs configured for 'git push':
    develop pushes to develop (local out of date)
    master  pushes to master  (up to date)

リモート ブランチを取得したいだけの場合は、 を使用できますgrep。使用したいコマンドは次のとおりです。

grep "\w*\s*(new|tracked)" -E

このコマンドで:

> git remote show origin | grep "\w*\s*(new|tracked)" -E
    amazon-rc2                   new (next fetch will store in remotes/origin)
    amazon-rc3                   new (next fetch will store in remotes/origin)
    arrivalStyleBDefault         new (next fetch will store in remotes/origin)
    develop                      tracked
    master                       tracked

このエイリアスを作成することもできます。

git config --global alias.branches "!git remote show origin | grep \w*\s*(new|tracked) -E"

その後、実行するだけgit branchesです。

于 2015-07-06T14:33:42.260 に答える
2

私は欲しいものを手に入れるためにめちゃくちゃなシェルパイプラインをやってしまいました。オリジンリモートからブランチをマージしました:

git branch -r --all --merged \
    | tail -n +2 \
    | grep -P '^  remotes/origin/(?!HEAD)' \
    | perl -p -e 's/^  remotes\/origin\///g;s/master\n//g'
于 2015-07-31T18:49:31.560 に答える
0

リストしているリモートオリジンが本当に必要なリポジトリであり、古いクローンではないことを確認してください。

于 2014-06-13T09:28:17.653 に答える