Je travaillais sur un dépôt sur mon compte GitHub et c'est un problème sur lequel je suis tombé.
- Projet Node.js avec un dossier avec quelques paquets npm installés
- Les colis étaient en
node_modules
dossier - J'ai ajouté ce dossier au dépôt git et j'ai poussé le code sur github (je ne pensais pas à la partie npm à ce moment-là).
- J'ai réalisé que vous n'avez pas vraiment besoin de ce dossier pour faire partie du code.
- J'ai supprimé ce dossier, je l'ai poussé
À ce moment-là, la taille de l'ensemble du dépôt git était d'environ 6MB où le code réel (tout sauf ce dossier) n'était qu'à peu près 300 KB .
Ce que je cherche en fin de compte, c'est un moyen de se débarrasser des détails de ce dossier de paquets dans l'historique de git, de sorte que si quelqu'un le clone, il n'ait pas à télécharger 6 Mo d'historique alors que les seuls fichiers réels qu'il obtiendra à partir du dernier commit seront de 300 Ko.
J'ai cherché des solutions possibles pour cela et j'ai essayé les 2 méthodes suivantes
- Supprimer un fichier du dépôt git (historique)
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
Le Gist semblait fonctionner où après avoir exécuté le script, il a montré qu'il s'est débarrassé de ce dossier et après cela, il a montré que 50 commits différents ont été modifiés. Mais il ne m'a pas laissé pousser ce code. Lorsque j'ai essayé de le pousser, il a dit Branch up to date
mais a montré que 50 commits ont été modifiés lors d'une git status
. Les deux autres méthodes n'ont pas aidé non plus.
Maintenant, même s'il a montré qu'il s'est débarrassé de l'historique de ce dossier, lorsque j'ai vérifié la taille de ce repo sur mon hôte local, il était toujours autour de 6 Mo. (J'ai également supprimé le refs/original
mais n'a pas vu le changement dans la taille du repo).
Ce que je cherche à clarifier, c'est s'il y a un moyen de se débarrasser non seulement de l'historique des commits (qui est la seule chose que je pense qui s'est produite) mais aussi de ces fichiers que git conserve en supposant que l'on veuille faire un retour en arrière.
Supposons qu'une solution soit présentée et appliquée sur mon hôte local mais qu'elle ne puisse pas être reproduite sur ce dépôt GitHub, est-il possible de cloner ce dépôt, de revenir au premier commit et de le pousser (ou cela signifie-t-il que git aura toujours un historique de tous ces commits ? - aka. 6MB).
Mon objectif final ici est de trouver la meilleure façon de se débarrasser du contenu du dossier dans git afin qu'un utilisateur n'ait pas à télécharger 6MB de matériel et qu'il puisse toujours avoir les autres commits qui n'ont jamais touché le dossier des modules (c'est à peu près tout) dans l'historique de git.
Comment puis-je le faire ?
4 votes
Si l'une des réponses ci-dessous a résolu votre problème, vous devriez peut-être envisager d'en accepter une comme réponse à votre question. meta.stackexchange.com/questions/5234/
0 votes
La meilleure réponse est : stackoverflow.com/a/32886427/5973334