Gitはいつリモートブランチのリストを更新しますか?


496

を使用すると、git branch --allすべてのリモートブランチとローカルブランチが表示されます。Gitはいつこのリストを更新しますか?

プル/プッシュで?そして、どうすればGit Bashを使用して更新できますか?


5
注として、git ls-remoteここでは興味深いかもしれません。
2016

回答:


1221

リモートブランチのローカルリストを更新するには:

git remote update origin --prune

(ローカル)Gitが認識しているすべてのローカルブランチとリモートブランチを表示するには

git branch -a

143
git remote update origin --prune私が探していたものです
WonderLand 2017年

6
を使用するこの回答とを使用git remote updateする承認済みの回答の違いについてgit fetchこちらをご覧ください
The Red Pea

6
これが正解です。git fetchリモートブランチのローカルキャッシュを削除しませんでした。のみ、--pruneそれをすべてクリーンアップすることができました。
フェリペアルバレス

23
gitにこれを自動的に実行させるgit config remote.origin.prune true
kjhf

8
git remote prune origin同じ効果があり、タイプを少なくします。
ドビン

27

git branch --allBashから実行した場合、表示されるリモートブランチとローカルブランチのリストには、コマンドを実行したときにローカルGitが「知っている」ことが反映されていると思います。Gitはシステムのローカルブランチに関して常に最新であるため、ローカルブランチのリストは常に正確です。

ただし、リモートブランチの場合、これは当てはまる必要はありません。ローカルGitは、最後のフェッチ(またはプル)で確認したリモートブランチのみを認識します。したがって、最後にフェッチまたはプルしたに実行された新しいリモートブランチが表示されない可能性がgit branch --allあります。

ローカルおよびリモートのブランチリストが最新であることを確認するには、実行するgit fetch 前にを実行しgit branch --allます。

詳細については、実行時に表示される「リモート」ブランチgit branch --allは実際にはまったくリモートではありません。彼らは実際にはローカルです。たとえば、リモートに呼び出されたブランチがあるとしますfeatureローカルGitに少なくとも1回プルしたします。あなたは、表示されますorigin/feature、あなたが実行したときにブランチとして記載されていますgit branch --all。しかし、このブランチは実際にはローカルの Gitブランチです。実行するとgit fetch origin、この追跡ブランチはリモートからの新しい変更で更新されます。新しいリモートブランチが存在する可能性があるため、ローカルの状態が古くなる可能性があるのはこのためです。または、トラッキングブランチが古くなる可能性があります。


4
うん、git fetchやった。
BendEg

14
反対投票者へのメモ:よく意図された説明で正しい情報が反対投票に値すると感じた場合は、少なくとも声を上げてコメントを残してください。
Tim Biegeleisen 2017

3
git fetch私にはうまくいきません、追加する必要があり--pruneます。ところで、私はdownvoterないよ;)
徳清

3
git fetch削除されたリモートブランチは削除されません。一部の人々はdownvoted理由は、おそらくです
ジェローム・MEVEL

@JérômeMEVEL承認された回答の投票数が1000になったことは私にとって驚異的です。それはクレイジーだ...私がその種の露出を持っていればいいのに:-)
Tim Biegeleisen

24

OPは、デフォルトのリモートのすべてのブランチではなく、すべてのリモートのクリーンアップを要求しませんでした。

そう git fetch --prune何を使うべきかです。

設定git config remote.origin.prune true--prune自動になります。その場合git fetch、ローカルコピーから古いリモートブランチも削除されます。Gitフェッチまたはプルを使用した自動プルーンも参照してください

これは、リモートブランチを追跡しなくなったローカルブランチをクリーンアップしないことに注意してください。そのため、リモートに存在しないローカル追跡ブランチを削除する方法を参照してください。


少し短くするにはgit fetch -p
Michael Warner

2

git fetch最近作成されたすべてのブランチをフェッチするために使用します。


1
git fetchgit 2.17.1では、何も変更されませんでした。どのバージョンとオプションを使用していますか?
PointedEars 2018

2
OPの質問を解決するには、--pruneまたはgit config remote.NAME.prune trueこれが必要です
Oliver

-1

Eclipseを使用していて、アップストリームから新しいブランチを表示したい場合。

Gitパースペクティブで、Gitリポジトリを右クリックし、[Fetch from Upstream]を選択します。これは新しいリモートブランチをフェッチします。


-8

Eclipseを使用している場合、

  1. 「Gitリポジトリ」を開く
  2. リポジトリを見つけます。
  3. 「ブランチ」、「リモートトラッキング」の順に開きます。

ギット

それらはすべてそこにあるはずです。右クリックして「チェックアウト」します。


これはどのように質問に答えますか?- 「Gitはいつリモートブランチのリストを更新しますか?」
Peter Mortensen

日食で地元の枝をリフレッシュしたいとき、私はグーグルでそれをここに連れて行きました。この投稿は実際に賛成投票があったため、実際には数人の人を助けました。多分私は質問を誤解しました。私にとって、Eclipse IS Git(それへのインターフェース)です。みんなを怒らせてすみません!
markthegrea
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.