私はgit branch -r
を試しましたが、それは私がローカルに追跡したリモートブランチだけをリストします。私が持っていないもののリストをどうやって見つけるのですか? (コマンドに all remoteブランチがリストされていても、追跡されていないブランチだけがリストされていてもかまいません。)
大多数の場合[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 fetch
とgit remote update
がすべてのremote
のブランチを取得しないように" となります。
[1] この脚注2018年2月の執筆時点で、私はコメントを調べて、git branch -r
が大多数(約90%または 140 のうち 125 )で機能することを確認しました。
git branch -r
が機能しない場合は、git config --get remote.Origin.fetch
に この回答 のようにワイルドカード(*
)が含まれていることを確認してください。
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)
git branch -a | grep remotes/*
git branch -r
を使用すると、すべてのリモートブランチが一覧表示され、git branch -a
を使用すると、ローカルとリモートのすべてのブランチが一覧表示されます。これらのリストは時代遅れになります。これらのリストを最新に保つには、次のコマンドを実行してください。
git remote update --Prune
これはあなたのローカルブランチリストをリモートからのすべての新しいもので更新し、もうそこにないものはすべて削除します。 --Pruneを指定せずにこのupdateコマンドを実行すると、新しいブランチが取得されますが、リモートでは削除されません。
あなたは、リモートを指定することによってこの更新をスピードアップすることができます、そうでなければそれはあなたが追加したすべてのリモートから更新を引き出すでしょう。
git remote update --Prune Origin
しかし
git branch -ar
それをするべきです。
git fetch
の後にgit branch -r
を続けることもできます。取得しないと、最新の分岐は表示されません。
私が見つけた最も簡単な方法:
git branch -a
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
実行するのに最適なコマンドは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
を実行するだけです。
GitBashでは、次のものを使用できます。
git branch -a
あなたがリストしているリモートOriginが本当にあなたが望むリポジトリであり、古いクローンではないことを確認してください。
このコマンドを使う
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を含むすべてのリモートブランチを一覧表示します。
これを試して....
git fetch Origin
git branch -a
git fetch
コマンドを実行するだけです。すべてのリモートブランチをローカルリポジトリにプルし、git branch -a
を実行してすべてのブランチを一覧表示します。
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'
リストする必要があることがわかっているリモートブランチがあるが、リストに表示されない場合は、次を使用してOriginが適切にセットアップされていることを確認する必要があります。
git remote show Origin
それがすべて良い場合は、おそらくアップデートを実行する必要があります。
git remote update
それが正常に実行されると仮定すると、他の答えが言うことを行うことができるはずです:
git branch -r
私は使うだろう:
git branch -av
このコマンドは、/remote
で始まるリモートブランチを含むすべてのブランチのリストを表示するだけでなく、更新した内容と最後のコミットコメントに関する*
フィードバックを提供します。