Ich habe an einem Repository in meinem GitHub-Konto gearbeitet und auf dieses Problem bin ich gestoßen.
- Node.js-Projekt mit einem Ordner, in dem einige npm-Pakete installiert sind
- Die Pakete befanden sich im
node_modules
Ordner - Fügte diesen Ordner zum Git-Repository hinzu und schob den Code zu Github (dachte zu diesem Zeitpunkt nicht an den npm-Teil)
- Es wurde erkannt, dass Sie diesen Ordner nicht wirklich benötigen, um Teil des Codes zu sein
- Diesen Ordner gelöscht, verschoben
Zu diesem Zeitpunkt betrug die Größe des gesamten Git- Repos etwa 6 MB, wobei der tatsächliche Code (alle außer diesem Ordner) nur etwa 300 KB betrug .
Was ich am Ende suche, ist eine Möglichkeit, Details dieses Paketordners aus dem Git-Verlauf zu entfernen. Wenn jemand ihn klont, muss er keinen Verlauf im Wert von 6 MB herunterladen, in dem die einzigen tatsächlichen Dateien angezeigt werden Ab dem letzten Commit wären 300 KB.
Ich habe nach möglichen Lösungen dafür gesucht und diese beiden Methoden ausprobiert
- Datei aus dem Git-Repository entfernen (Verlauf)
- http://help.github.com/remove-sensitive-data/
- https://gist.github.com/1588371
Das Wesentliche schien zu funktionieren, als nach dem Ausführen des Skripts gezeigt wurde, dass dieser Ordner entfernt wurde, und danach, dass 50 verschiedene Commits geändert wurden. Aber ich konnte diesen Code nicht weitergeben. Als ich versuchte, es zu pushen, hieß es, Branch up to date
aber es wurden 50 Commits auf a geändert git status
. Die anderen beiden Methoden haben auch nicht geholfen.
Obwohl sich herausstellte, dass der Verlauf dieses Ordners gelöscht wurde, waren es immer noch etwa 6 MB, als ich die Größe dieses Repos auf meinem lokalen Host überprüfte. (Ich habe auch den refs/original
Ordner gelöscht , aber die Änderung der Größe des Repos nicht gesehen).
Was ich klären möchte, ist, ob es eine Möglichkeit gibt, nicht nur den Commit-Verlauf (der das einzige ist, was meiner Meinung nach passiert ist) loszuwerden, sondern auch die Dateien, von denen git immer wieder annimmt, dass man einen Rollback durchführen möchte.
Nehmen wir an, es wird eine Lösung dafür vorgestellt, die auf meinen lokalen Host angewendet wird, aber nicht auf dieses GitHub-Repo reproduziert werden kann. Ist es möglich, dieses Repo zu klonen, auf das erste Commit zurückzusetzen, den Trick auszuführen und es zu pushen (oder bedeutet das, dass Git es tut? Haben Sie noch eine Geschichte all dieser Commits? - aka. 6MB).
Mein Endziel hier ist es, im Grunde den besten Weg zu finden, um den Ordnerinhalt von git zu entfernen, damit ein Benutzer keine Inhalte im Wert von 6 MB herunterladen muss und möglicherweise noch die anderen Commits hat, die den Modulordner nie berührt haben (das ist hübsch viel von ihnen) in der Geschichte von Git.
Wie kann ich das machen?