En utilisant git pour un projet, j'ai accidentellement ajouté à un commit un gros .Zip
fichier. Je n'ai pas remarqué jusqu'à ce que je commence à le télécharger sur github. Quand j'ai remarqué, j'ai frappé ctrl-c
, git remove
, git commit
et l'a téléchargé à nouveau (maintenant avec le fichier non suivi).
Je sais que ce n'était pas le bon choix à faire, car une fois que j'ai commis le .Zip
, il reste dans le dépôt jusqu'à ce que je revienne au commit, mais malheureusement je ne l'ai pas fait.
Maintenant, lorsque quelqu'un essaie de télécharger à partir du référentiel, cela prend beaucoup de temps, parfois donne git the remote end hung up unexpectedly
(que j'ai lu peut être résolu en faisant git config
) et est très ennuyeux.
Mon point est le suivant: existe-t-il un moyen de dire à une autre requête pull/fetch d'oublier ce fichier spécifique dans cette version de commit spécifique?
Github fournit un page d'aide utile sur la suppression de fichiers comme ceci. Il y a aussi d'autres questions sur StackOverflow qui couvrent ce
Voir aussi cette section du livre Pro Git , un exemple donné ici:
Pour supprimer un fichier nommé passwords.txt de tout votre historique, vous pouvez utiliser l'option --tree-filter pour filtrer-branche:
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21) Ref 'refs/heads/master' was rewritten
Après le nettoyage, vous pouvez également essayer un git gc pour compresser et nettoyer davantage le référentiel.
Il y a maintenant un outil appelé "BFG Repo-Cleaner", il est mentionné sur github.com comme une alternative à filter-branch https://help.github.com/articles/remove-sensitive-data/
Lien vers la page de l'outil https://rtyley.github.io/bfg-repo-cleaner/