私がgit fetch Origin
を実行し、Originが削除されたブランチを持っているとき、私のリポジトリでそれを更新するようには見えません。 git branch -r
を実行しても、まだOrigin/DELETED_BRANCH
が表示されています。
どうすればこれを修正できますか?
次のことをする必要があります
git fetch -p
これにより、リモートブランチのローカルデータベースが更新されます。
から http://www.gitguys.com/topics/adding-and-removing-remote-branches/
誰かがリモートリポジトリからブランチを削除した後、ユーザーがgit pullやgit fetchを行ってもgitは自動的にローカルリポジトリブランチを削除しません。ただし、リモートリポジトリで削除されたすべての追跡ブランチをローカルリポジトリから削除する場合は、次のように入力します。
リモートPrune Originのgit
注意として、git fetch -p
からの-pパラメータは実際には「プルーニング」を意味します。
どちらを選択しても、存在しないリモートブランチはあなたのローカルリポジトリから削除されます。
次のことをする必要があります
git fetch -p
あなたのブランチリストを同期させるために。 git manual と言う
-p
、--Prune
取得後、もうリモートに存在しないリモートトラッキング参照を削除します。デフォルトのタグの自動追跡または--tags
オプションのためにのみタグが取得された場合、タグは整理の対象になりません。ただし、明示的なrefspecのためにタグがフェッチされた場合(コマンドラインまたはリモート設定のどちらかで、たとえばリモートが--mirror
オプションで複製された場合など)、それらも整理の対象となります。
私は個人的にはgit fetch Origin -p --progress
を使うのが好きです。なぜならそれは進行状況を示すからです。
これは私のために働きました。
git remote update --Prune
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フェッチこれは 10a6cc8 (
fetch --Prune
:取得する前にPruneを実行する、2014-01-02)で変更されましたが、その議論の中で誰も明示的に「後」を宣伝していることに気づいていないようです。
だからドキュメントは今述べています:
以前フェッチし、リモートに存在しなくなったリモートトラッキング参照を削除します
それは、
前のフェッチからの "
frotz/nitfol
"という名前のリモートトラッキングブランチがあり、アップストリームに "frotz
"というブランチがある場合、フェッチはアップストリームからの "frotz/nitfol
"と共に "git fetch --Prune
"の削除に失敗します。 gitは、問題を解決するために "git remote Prune
"を使用するようにユーザーに通知します。フェッチ操作の前に整理操作を移動して、 "
fetch --Prune
"の機能を変更します。このようにして、競合をユーザーに警告するのではなく、自動的に修正します。