web-dev-qa-db-ja.com

Git 1.7以降ですべてのリモートブランチを一覧表示するにはどうすればいいですか?

私はgit branch -rを試しましたが、それは私がローカルに追跡したリモートブランチだけをリストします。私が持っていないもののリストをどうやって見つけるのですか? (コマンドに all remoteブランチがリストされていても、追跡されていないブランチだけがリストされていてもかまいません。)

515
James A. Rosen

大多数の場合[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 updateがすべてのremoteのブランチを取得しないように" となります。


[1] この脚注2018年2月の執筆時点で、私はコメントを調べて、git branch -rが大多数(約90%または 140 のうち 125 )で機能することを確認しました。

git branch -rが機能しない場合は、git config --get remote.Origin.fetchこの回答 のようにワイルドカード(*)が含まれていることを確認してください。

641
Dustin

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)
154
Klas Mellbourn
git branch -a | grep remotes/*
46
Idan K

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

git remote update --Prune

これはあなたのローカルブランチリストをリモートからのすべての新しいもので更新し、もうそこにないものはすべて削除します。 --Pruneを指定せずにこのupdateコマンドを実行すると、新しいブランチが取得されますが、リモートでは削除されません。

あなたは、リモートを指定することによってこの更新をスピードアップすることができます、そうでなければそれはあなたが追加したすべてのリモートから更新を引き出すでしょう。

git remote update --Prune Origin
36
Nicholas Gronow

しかし

git branch -ar

それをするべきです。

29
Seakayone

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

git ls-remote

Gitドキュメンテーション

17

git fetchの後にgit branch -rを続けることもできます。取得しないと、最新の分岐は表示されません。

17
Max Sohrt

私が見つけた最も簡単な方法:

git branch -a
9

TL; TR;

これはあなたの問題の解決策です:

git remote update --Prune    # To update all remotes
git branch -r                # To display remote branches

または

git remote update --Prune    # To update all remotes
git branch <TAB>             # To display all branches
6
simhumileco

実行するのに最適なコマンドは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を実行するだけです。

5
Anubian Noob

GitBashでは、次のものを使用できます。

git branch -a

3
ISSAM RESS

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

0
user3737174

このコマンドを使う

git log -r --oneline --no-merges --simplify-by-decoration --pretty=format:"%n %Cred CommitID %Creset: %h %n %Cred Remote Branch %Creset :%d %n %Cred Commit Message %Creset: %s %n"


CommitID       : 27385d919 
Remote Branch  : (Origin/ALPHA) 
Commit Message :  New branch created

コミットメッセージ、リモートブランチによって参照されるコミットIDを含むすべてのリモートブランチを一覧表示します。

0
Nayagam

これを試して....

git fetch Origin
git branch -a
0
Ashish Mehta

git fetchコマンドを実行するだけです。すべてのリモートブランチをローカルリポジトリにプルし、git branch -aを実行してすべてのブランチを一覧表示します。

0
Manjunatha B

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

git branch -r --all --merged \
    | tail -n +2 \
    | grep -P '^  remotes/Origin/(?!HEAD)' \
    | Perl -p -e 's/^  remotes\/Origin\///g;s/master\n//g'
0
ThorSummoner

リストする必要があることがわかっているリモートブランチがあるが、リストに表示されない場合は、次を使用してOriginが適切にセットアップされていることを確認する必要があります。

git remote show Origin

それがすべて良い場合は、おそらくアップデートを実行する必要があります。

git remote update

それが正常に実行されると仮定すると、他の答えが言うことを行うことができるはずです:

git branch -r
0
ArtOfWarfare

私は使うだろう:

git branch -av

このコマンドは、/remoteで始まるリモートブランチを含むすべてのブランチのリストを表示するだけでなく、更新した内容と最後のコミットコメントに関する*フィードバックを提供します。

0
prosti