7

最近、のrefspecを再編成し、remote.origin.fetchリモートからブランチの小さなサブセットのみをフェッチするようになりました。ただし、git branch -a以前にフェッチした多くのリモートブランチが表示されますが、現在はフェッチされていません。これらのリモート追跡ブランチはリモートに存在するため、使用git pruneしても役に立ちません。

4

2 に答える 2

10

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次回、これらのタグをすべてフェッチしないように構成することをお勧めします。これは、この質問の範囲を超えています。

于 2013-03-28T01:08:30.240 に答える
1

リモートを削除して再度追加してから、を再構成できますremote.origin.fetch。木槌で蟻の丘にぶつかっていますが、それで仕事は終わります。ローカルブランチ(存在する場合)を削除する必要がありますが、それは単なるgit branch -D theOffendingBranchNameです。

編集: 冒険心があれば、嫌い.git/refs/なファイルを削除して略奪することができます。ただし、プルーニングが非常にうまくいかない場合に備えて、最初に.gitフォルダーのバックアップを作成してください。

于 2013-03-27T04:46:55.037 に答える