2010-01-22 7 views
187

J'ai essayé de trouver un bon tutoriel sur la réduction de la taille des pensions, mais je n'en ai trouvé aucun. Comment puis-je réduire ma taille de repo ... il s'agit d'environ 10 Mo, mais la chose est Heroku ne permet que 50 Mo et je ne suis pas près d'avoir fini de développer mon application.Réduire la taille du dépôt git

J'ai ajouté les suspects habituels (log, vendeur, doc etc) à .gitignore déjà. Bien que j'ai seulement ajouté .gitignore récemment.

Des suggestions?

+1

Je viens de le faire et il l'a ramené à 2,2 mb ... merci beaucoup! Bien que cela ne semble pas réduire la taille du repo sur Heroku..hmm –

+9

Poussez-le en utilisant --force. Il écrasera le contenu même s'il n'y a pas eu de changement (aucun nouveau commit, etc.) –

+1

@MarcinGil - Ci-dessous, VonC indique que vous devez accéder au serveur pour nettoyer le serveur distant (si je l'analyse correctement). – jww

Répondre

221

git gc --aggressive est une façon de forcer le processus d'élagage (pour être sûr: git gc --aggressive --prune=now). Vous avez également other commands pour nettoyer le repo. Ne pas oublier cependant, parfois git gc seul peut increase the size of the repo!

Il peut également être utilisé après un filter-branch, pour marquer certains répertoires à supprimer de l'historique (avec un gain d'espace supplémentaire); voir here. Mais cela signifie que personne ne tire de votre repo public. filter-branch can keep backup refs in .git/refs/original, de sorte que ce répertoire peut également être nettoyé. Enfin, comme mentionné in this comment et this question; le nettoyage de la reflog peut aider:

git reflog expire --all --expire=now 
git gc --prune=now --aggressive 

Une façon encore plus complète, et peut-être dangereux, la solution est to remove unused objects from a git repository

+0

Dans un autre scénario, voir aussi http://stackoverflow.com/questions/1029969/why-is-my-git-repository-so-big – VonC

+1

Note à moi-même: ne pas oublier les branches distantes: http: // stackoverflow. com/questions/11255802/delete-remove-fichier-binaire-de-git-repository-is-still-large – VonC

+1

Note à moi-même: ne pas oublier les balises à distance – saiyancoder

59

Merci pour vos réponses. Voici ce que j'ai fait:

git gc 
git gc --aggressive 
git prune 

Cela semblait avoir fait l'affaire. J'ai commencé avec environ 10.5MB et maintenant son peu plus de 980KBs.

+6

'prune' est toujours exécuté par' gc' (il y a 2 semaines par défaut). – Cas

+80

U peut exécuter tous les 3 avec prune jusqu'à maintenant en utilisant 'git gc --aggressive --prune = now' – rahul286

Questions connexes