web-dev-qa-db-ja.com

削除されたリモートブランチでOriginから取得しますか?

私がgit fetch Originを実行し、Originが削除されたブランチを持っているとき、私のリポジトリでそれを更新するようには見えません。 git branch -rを実行しても、まだOrigin/DELETED_BRANCHが表示されています。

どうすればこれを修正できますか?

390
Chris Muench

次のことをする必要があります

git fetch -p

これにより、リモートブランチのローカルデータベースが更新されます。

702

から http://www.gitguys.com/topics/adding-and-removing-remote-branches/

誰かがリモートリポジトリからブランチを削除した後、ユーザーがgit pullやgit fetchを行ってもgitは自動的にローカルリポジトリブランチを削除しません。ただし、リモートリポジトリで削除されたすべての追跡ブランチをローカルリポジトリから削除する場合は、次のように入力します。

リモートPrune Originのgit

注意として、git fetch -pからの-pパラメータは実際には「プルーニング」を意味します。
どちらを選択しても、存在しないリモートブランチはあなたのローカルリポジトリから削除されます。

82
user246645

次のことをする必要があります

git fetch -p

あなたのブランチリストを同期させるために。 git manual と言う

-p--Prune
取得後、もうリモートに存在しないリモートトラッキング参照を削除します。デフォルトのタグの自動追跡または--tagsオプションのためにのみタグが取得された場合、タグは整理の対象になりません。ただし、明示的なrefspecのためにタグがフェッチされた場合(コマンドラインまたはリモート設定のどちらかで、たとえばリモートが--mirrorオプションで複製された場合など)、それらも整理の対象となります。

私は個人的にはgit fetch Origin -p --progressを使うのが好きです。なぜならそれは進行状況を示すからです。

28
naXa

これは私のために働きました。

git remote update --Prune
9
Antstud

git fetch -pに関しては、Git 1.9ではその振る舞いが変わり、それを反映しているのはGit 2.9.x/2.10だけです。

commit 9e702 (2016年6月13日)by Jeff King(peff を参照してください。
Junio C Hamano - gitster - in commit 1c22105 、2016年7月6日にマージされました)

fetch:剪定が行われることを文書化するbeforeフェッチ

これは 10a6cc8fetch --Prune:取得する前にPruneを実行する、2014-01-02)で変更されましたが、その議論の中で誰も明示的に「後」を宣伝していることに気づいていないようです。

だからドキュメントは今述べています:

以前フェッチし、リモートに存在しなくなったリモートトラッキング参照を削除します

それは、

前のフェッチからの "frotz/nitfol"という名前のリモートトラッキングブランチがあり、アップストリームに "frotz"というブランチがある場合、フェッチはアップストリームからの "frotz/nitfol"と共に "git fetch --Prune"の削除に失敗します。 gitは、問題を解決するために "git remote Prune"を使用するようにユーザーに通知します。

フェッチ操作の前に整理操作を移動して、 "fetch --Prune"の機能を変更します。このようにして、競合をユーザーに警告するのではなく、自動的に修正します。

6
VonC