最近、のrefspecを再編成し、remote.origin.fetch
リモートからブランチの小さなサブセットのみをフェッチするようになりました。ただし、git branch -a
以前にフェッチした多くのリモートブランチが表示されますが、現在はフェッチされていません。これらのリモート追跡ブランチはリモートに存在するため、使用git prune
しても役に立ちません。
2 に答える
robrichからの回答には、良いヒントがあります。すべてのリモート追跡ブランチ(またはリモート)を削除して、git fetch
必要なものだけを最初から取得するために使用できます。
リモートをまとめて削除しようとする場合は、.git / configファイルをバックアップして、後でリモートを追加し直したときに、バックアップからリモートごとの設定を取得できるようにすることができます。
ただし、リモートを削除しても、リモート追跡ブランチは削除されません。たぶん私のローカルリポジトリは悪いです。同じ問題を抱えている人のために、私がやったことは次のとおりです。
# This deletes all remote tracking branches for all remotes. So be careful if you have multiple remotes.
git branch -r | xargs -L 1 git branch -rD
また、リモートからのタグがたくさんあるので、処理が遅くなります。私もこれをしました:
# Be careful! This deletes EVERY tag!
git tag | xargs -L 1 git tag -d
git fetch
次回、これらのタグをすべてフェッチしないように構成することをお勧めします。これは、この質問の範囲を超えています。
リモートを削除して再度追加してから、を再構成できますremote.origin.fetch
。木槌で蟻の丘にぶつかっていますが、それで仕事は終わります。ローカルブランチ(存在する場合)を削除する必要がありますが、それは単なるgit branch -D theOffendingBranchName
です。
編集: 冒険心があれば、嫌い.git/refs/
なファイルを削除して略奪することができます。ただし、プルーニングが非常にうまくいかない場合に備えて、最初に.gitフォルダーのバックアップを作成してください。