Ich arbeite mit einem Git Repo, der sehr groß ist (& gt; 10 GB). Der Repo selbst hat viele große Binärdateien mit vielen Versionen von jedem (& gt; 100 MB). Die Gründe dafür liegen außerhalb des Rahmens dieser Frage.
Gegenwärtig ist es nicht mehr möglich, ordnungsgemäß aus dem Repo zu klonen, da der Server selbst nicht genügend Arbeitsspeicher (12 GB) hat und einen Fehlercode sendet. Ich würde es hier einfügen, aber es dauert gut über eine Stunde, um zu dem Punkt des Scheiterns zu kommen.
Gibt es irgendwelche Methoden, mit denen ich einen Klon erfolgreich machen kann? Auch eine, die eine Teilkopie des Repos ergreift? Oder eine Art, wie ich Klone in mundgerechte Klone klonen kann, die den Server nicht ersticken lassen?
Verwenden Sie rsync
, um den gesamten Repo zu kopieren, indem Sie auf das Verzeichnis der obersten Ebene zeigen, das .git
enthält. Ändern Sie dann die Fernbedienungen in .git / config, um auf das Original zu verweisen.
Das ist die einzige Taste in meinem Kopf, die in .git/config
geändert werden muss, aber ich suche nach anderen Hosts, die hostspezifisch sind. Die meisten davon sind ziemlich selbsterklärend.
Eine Antwort auf 'Wie klicke ich ein Git Repo, das zu groß geworden ist?' ist 'Reduziere seine Größe und entferne die Big Blobs .
(Ich muss zugeben, dass der Fragesteller verdeutlicht in einem Kommentar , dass das Repo-Fixing" über den Rahmen dieser Frage hinausgeht ", der Kommentar sagt aber auch" Ich arbeite für eine schnelle Lösung Erlauben Sie mir, das Repo sofort zu klonen ', also schreibe ich diese Antwort, weil a) es möglich ist, dass sie die BFG nicht kennen und das schwierige Reinigen eines Repos überschätzen, und b) es ist in der Tat sehr verflucht schnell.
Verwenden Sie The BFG : <, um das Repo schnell und schnell zu löschen / p> %Vor%
Alle alten Dateien mit einer Größe von mehr als 100 MB (die sich nicht in Ihrem letzten Commit befinden) werden aus dem Verlauf Ihres Git-Repositorys entfernt. Sie können dann git gc
verwenden, um die toten Daten zu entfernen:
Sobald dies erledigt ist, wird Ihr Repo viel kleiner sein und sollte ohne Probleme klonen.
Vollständige Offenlegung: Ich bin der Autor des BFG Repo-Cleaner.
Sie können versuchen, --depth
-Option an git clone
zu übergeben. Oder du kannst es kopieren mit rsync
oder etwas ähnliches?
Wenn Sie physischen Zugriff oder Shell-Zugriff auf den Server haben, können Sie den Repo manuell über eine externe Festplatte oder FTP übertragen. Wenn das Repo leer ist, lesen Sie Wie konvertiere ich ein Bare Git Repository in ein normales .
Versuchen Sie, die Pack-Erstellungsparameter im Serving Repo neu zu konfigurieren, insbesondere git's ~ no limit ~ default für pack.windowmemory
.
Ich würde mit
anfangen %Vor%, weil es standardmäßig so viel pro Kern verwendet.
Tags und Links git