Kompakte Repo durch Entfernen alter Commits

8

Gibt es eine Möglichkeit, die Repo-Größe zu reduzieren, indem Sie die lokale Kopie der Daten über alte Commits entfernen?

Ähnlich wie git clone --depth 5 einen kleinen lokalen Klon mit nur letzten Commit-Daten erzeugt.

Der Repo enthält Gigabytes an Spiel-Assets, die in der Vergangenheit mehrfach überschrieben wurden.

Bearbeiten : Ich möchte nicht nur die Vergangenheit löschen. Ich möchte, dass der Verlauf mit dem Remote konsistent bleibt, aber ich möchte nicht, dass alte Commits lokal gespeichert und verfügbar sind.

    
Eugene Pankov 31.05.2013, 09:46
quelle

2 Antworten

7

Leider ist es NICHT möglich, nur die letzten Commits in der Historie zu behalten und voll nutzbares Repository zu haben. Shallow Copy ist NICHT vollständig nutzbar, da es nicht in Commit eingebunden werden kann.

Mit anderen Worten, aufgrund der Art und Weise, wie git Daten im Objektspeicher speichert, haben Sie nicht viele Optionen, außer das Geschriebene von Grund auf neu zu schreiben.

Der wahrscheinlich einfachste Ansatz besteht darin, eine Kopie aller aktuellen Spiel-Asset-Dateien irgendwo außerhalb des Git-Repositorys zu erstellen und dann git filter-branch als hier beschrieben , um Ihre Assets aus der Historie zu entfernen, so wie sie nie existiert haben. Kopieren Sie die Assets schließlich wieder an den richtigen Ort und binden Sie sie erneut ein. Dadurch wird Ihr Verlauf so umgeschrieben, dass Spiel-Assets nur in den letzten Commits angezeigt werden.

Es wird jedoch immer noch nicht Speicherplatz freigegeben, bis Sie:

%Vor%     
mvp 31.05.2013, 10:45
quelle
3

git gc --prune=<date> sollte tun, was Sie wollen. Werfen Sie einen Blick in die Dokumentation: Ссылка

Update1: Ich empfehle Ihnen, diesen Blogbeitrag auch über git gc zu lesen: Ссылка

Update2: @mvp hat recht, nach einer tiefen Recherche wird git gc nur nicht verfolgte Objekte entfernen. Um Objekte zu entfernen, verwenden Sie git filter-branch . Ich empfehle Ihnen, dieses Thema über Entfernen von Objekten zu lesen und die git filter-branch Dokumentation. Danke für die heads up @mvp.

    
Daniel Gomes 31.05.2013 09:51
quelle

Tags und Links