Je travaillais sur un référentiel sur mon compte GitHub et c'est un problème sur lequel je suis tombé.
- Projet Node.js avec un dossier avec quelques packages npm installés
- Les packages étaient dans le
node_modules
dossier - Ajout de ce dossier au dépôt git et transmission du code à github (ne pensait pas à la partie npm à l'époque)
- Réalisé que vous n'avez pas vraiment besoin de ce dossier pour faire partie du code
- Supprimé ce dossier, poussé
Dans ce cas, la taille du dépôt git total était d'environ 6 Mo, où le code réel (tous sauf ce dossier) n'était que d'environ 300 Ko .
Maintenant, ce que je recherche à la fin est un moyen de se débarrasser des détails de ce dossier de package de l'historique de git, donc si quelqu'un le clone, il n'a pas besoin de télécharger 6 Mo d'historique où les seuls fichiers réels qu'ils obtiendront au dernier commit serait de 300 Ko.
J'ai recherché des solutions possibles pour cela et j'ai essayé ces 2 méthodes
- Supprimer le fichier du référentiel git (historique)
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
The Gist semblait avoir fonctionné où, après avoir exécuté le script, il a montré qu'il s'était débarrassé de ce dossier et après cela, il a montré que 50 validations différentes ont été modifiées. Mais cela ne m'a pas permis de pousser ce code. Quand j'ai essayé de le pousser, il a dit Branch up to date
mais a montré que 50 commits ont été modifiés sur a git status
. Les 2 autres méthodes n'ont pas aidé non plus.
Maintenant, même s'il a montré qu'il s'était débarrassé de l'historique de ce dossier, lorsque j'ai vérifié la taille de ce dépôt sur mon hôte local, il était toujours d'environ 6 Mo. (J'ai également supprimé le refs/original
dossier mais je n'ai pas vu le changement dans la taille du dépôt).
Ce que je cherche à clarifier, c'est s'il existe un moyen de se débarrasser non seulement de l'historique des validations (qui est la seule chose qui, selon moi, s'est produite), mais aussi de ces fichiers que git continue de supposer que l'on veut annuler.
Disons qu'une solution est présentée pour cela et est appliquée sur mon hôte local mais ne peut pas être reproduite sur ce repo GitHub, est-il possible de cloner ce repo, de revenir au premier commit d'effectuer l'astuce et de le pousser (ou cela signifie-t-il que git ont encore un historique de tous ces commits? - alias. 6 Mo).
Mon objectif final ici est de trouver fondamentalement la meilleure façon de se débarrasser du contenu du dossier de git afin qu'un utilisateur n'ait pas à télécharger 6 Mo de trucs et ait éventuellement les autres validations qui n'ont jamais touché le dossier des modules (c'est assez presque tous) dans l'histoire de git.
Comment puis-je faire ceci?