2017-02-02 1 views
0

J'ai un référentiel pour un client de 287M. Il a environ 2 ans et demi, et cette taille n'est pas inhabituelle pour les repos sur lesquels j'ai travaillé. Qu'est-ce IS inhabituelle est que 181M de qui est le dossier .git.Comptabilisation de la taille extrêmement importante du dossier .git dans un référentiel

Il n'y a pas trop de branches et j'ai toujours pensé qu'une branche elle-même ne prenait pas beaucoup de place, c'est juste un pointeur. Mais s'il vous plaît corrigez-moi aussi si c'est faux.

Mes questions ont trait à la navigation ce (et bien sûr le fixer):

  1. Comment puis-je déterminer quel fichier (s) sont responsables?
  2. Il y a un fichier db_dump.sql.gz qui est stupidement inclus dans le repo. Comment puis-je supprimer ce fichier ET le supprimer complètement de l'historique git comme s'il n'avait jamais existé? (C'est 16M mais je pense que si un processus automatisé a jeté ce fichier, régulièrement, et que ces changements ont été commis, cela pourrait être une partie de la raison de la grande taille).
  3. Quels sont les moyens de réduire la taille du repo git le cas échéant? Merci.

Répondre

0

Vous pouvez exécuter git repack pour que git recomprime son contenu, mais cette commande doit être exécutée de temps en temps par git de toute façon.

  1. Je connais this post, ce qui donne un script pour avoir la liste git ses objets et de la taille, et ensuite essayer de leur donner un nom humain
  2. Cela nécessite de réécrire l'histoire, alors soyez prudent et avertir les autres développeurs si votre repo est partagée: la commande que vous recherchez est git filter-branch (avec l'option --index-filter)
  3. vous pouvez exécuter git gc ou git repack. Une autre façon est d'utiliser une nouvelle copie de votre pension:

    git clone mydir newdir 
    # see how much disk the new '.git/' dir takes