Ich habe an einem Repository auf meinem GitHub-Konto gearbeitet und bin über dieses Problem gestolpert.
- Node.js-Projekt mit einem Ordner, in dem ein paar npm-Pakete installiert sind
- Die Pakete waren in
node_modules
Ordner - Den Ordner zum Git-Repository hinzugefügt und den Code auf Github gepusht (zu diesem Zeitpunkt habe ich nicht an den npm-Teil gedacht)
- Ich habe festgestellt, dass dieser Ordner nicht wirklich Teil des Codes sein muss.
- Diesen Ordner gelöscht, verschoben
Zu diesem Zeitpunkt betrug die Größe des gesamten Git-Repositoriums etwa 6MB wo der eigentliche Code (alles außer diesem Ordner) nur etwa 300 KB .
Nun, was ich am Ende suche, ist ein Weg, um die Details dieses Paketordners aus der Git-Historie loszuwerden, so dass, wenn jemand es klont, sie nicht 6mb im Wert von Geschichte herunterladen müssen, wo die einzigen tatsächlichen Dateien, die sie ab der letzten Übertragung erhalten würden, 300KB sein würden.
Ich habe nach möglichen Lösungen für dieses Problem gesucht und diese 2 Methoden ausprobiert
- Datei aus dem Git-Repository entfernen (Historie)
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
Das Gist schien zu funktionieren, da es nach dem Ausführen des Skripts anzeigte, dass der Ordner gelöscht wurde und danach zeigte es an, dass 50 verschiedene Commits geändert wurden. Aber es ließ mich den Code nicht pushen. Als ich versuchte, ihn zu pushen, sagte es Branch up to date
zeigte aber, dass 50 Übertragungen bei einer git status
. Die anderen 2 Methoden haben auch nicht geholfen.
Obwohl es anzeigte, dass die Historie des Ordners gelöscht wurde, war die Größe des Repos auf meinem Localhost immer noch rund 6 MB groß. (Ich habe auch die refs/original
aber die Größe des Projektarchivs hat sich nicht geändert).
Was ich zu klären suche, ist, ob es eine Möglichkeit gibt, nicht nur die Commit-Historie loszuwerden (was das Einzige ist, von dem ich glaube, dass es passiert ist), sondern auch die Dateien, die Git behält, wenn man ein Rollback machen will.
Sagen wir, eine Lösung für diese präsentiert wird und auf meinem localhost angewendet wird, aber kann nicht reproduziert werden, dass GitHub Repo, ist es möglich, dass Repo zu klonen, Rollback zum ersten Commit führen Sie den Trick und pushen Sie es (oder bedeutet das, dass Git noch eine Geschichte von all diesen Commits haben wird? - aka. 6MB).
Mein Endziel hier ist im Grunde den besten Weg zu finden, um den Ordnerinhalt von Git loszuwerden, so dass ein Benutzer nicht 6MB im Wert von Sachen herunterladen muss und immer noch möglicherweise die anderen Commits, die nie berührt den Ordner Module (das ist so ziemlich alle von ihnen) in Git Geschichte haben.
Wie kann ich das tun?