2010-02-12 7 views
6

Bon, il y a environ 700 jours (> 30 jours) J'ai accidentellement sauvegardé ThirdParty/mapper/Songbird_1.2.0-1146_windows-i686-msvc8.exe (type de téléchargement iTunes) dans mon dépôt Git local sans m'en rendre compte, qui a également été poussé vers le dépôt git hébergé à distance, j'ai remarqué l'autre jour le dépôt était de plus de 200mb, alors que je m'attendais à environ 20mb.Bad commit to Git

j'ai suivi les instructions: http://github.com/guides/completely-remove-a-file-from-all-revisions

Outre l'exécution git gc --aggressive --prune, mais le répertoire local reste plus de 200Mo. Avant que je puisse trier le repo à distance, j'ai besoin de trier mon local, y at-il quelque chose de spécial à propos de mon cas (c'est-à-dire un fichier massif, il y a longtemps commettre). Comment puis-je supprimer complètement ce fichier et ramener le répertoire à la bonne taille? Note pour éviter la migration: Je pense que ceci est plus adapté à StackOverflow puisque Git est principalement un outil de développement local en ce moment, supporté par la communauté et ne faisant partie d'aucune distribution ou attente de sysadmins, c'est-à-dire admin de git le meilleur.

Répondre

3

J'ai écrit au sujet d'un problème similaire dans "git: shrinking Subversion import."

Le git filter-branch manpage a une liste de contrôle pour réduire un dépôt qui recommande d'exécuter filter-branch et le clonage puis laisser derrière le cochonneries.

clonage avec un chemin de système de fichiers fait des liens durs, utilisez donc une URL:

$ git clone file:///home/gbacon/src/dBTools.git 

Même après avoir fait cela, quelques grands blobs anonymes avaient survécu au clone. Merci à #git sur freenode pour la suggestion d'exciser le reflog:

$ git reflog expire --verbose --expire=0 --all 
$ git gc --prune=0