2013-01-10 2 views
-1

Accidentellement, j'ai poussé un commit incluant des fichiers qui auraient dû être ignorés (répertoires node_modules et composants de bower). Comme j'utilisais de nombreuses dépendances, le commit devenait assez volumineux et beaucoup de données étaient téléchargées.Supprimer des données poussées énormes de l'historique des repo git

J'ai supprimé ces fichiers dans un autre commettras et inclus un fichier .gitignore, mais chaque fois que je clone l'application tous ces gros fichiers sont téléchargés comme l'histoire du projet.

Y a-t-il un moyen de s'en débarrasser? Un moyen de supprimer définitivement node_modules et bower composants répertoire de mon repo git?

+0

Probablement un doublon de http://stackoverflow.com/questions/2116778/reduce-git-repository-size, http://stackoverflow.com/questions/5563564/remove-files-from-git-repo-completely , http://stackoverflow.com/questions/872565/remove-sensitive-files-and-their-commits-from-git-history, ou http://stackoverflow.com/questions/9854810/cleaning-up-git- histoire. –

Répondre

1

Vous pouvez réécrire l'historique git et supprimer ces objets de git. Rechercher sur le lien suivant http://git-scm.com/book/ch6-4.html

+3

Cela a fait l'affaire: ** git filtre-branche --tree-filtre 'rm -f mots de passe.txt' HEAD **. J'ai ce livre dans mon étagère .. Je dois le lire définitivement :) – jviotti

0

je dirais

git commit --amend 

ou

git commit --rebase 

Mais si le fichier que vous souhaitez supprimer a été là depuis un certain temps, puis:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD 
0

Même si vous exécutez un git rm, le fichier s continuera dans l'historique du projet. De cette façon, vous devrez les télécharger lorsque vous clonez le référentiel. Pour supprimer définitivement les fichiers, vous devez modifier l'historique.

Si le commit qui a ajouté les fichiers est très récent, vous pouvez effectuer un commit git reset avant le commit qui a ajouté les fichiers. Mais, si les fichiers ont été ajoutés il y a quelque temps, vous devez utiliser git filter branch. Je vais montrer quelques étapes que j'utilise lorsque je veux supprimer de gros fichiers du référentiel.

git filter-branch --index-filter 'git rm --cached --ignore-unmatch file-or-directory-that-you-want-to-remove-with-complete-path' --all. 

Ensuite, vous devez effectuer une git push -f parce que vous avez changé l'histoire du projet. De cette façon, lorsque vous clonez à nouveau le projet, les fichiers supprimés ne seront plus téléchargés.