2010-12-07 15 views
3

Ich habe eine große, alte Git-Repo mit vielen Binärdateien auf einem lokalen Redmine-Server gehostet. Ich würde gerne alle Kommentare vor einem bestimmten Datum (entweder vor 6 oder 12 Monaten) zusammenzählen, um etwas an der Größe meines Repos zu sparen.Squash git Geschichte

Gibt es eine Möglichkeit, dies zu tun?

Antwort

3

Jedes Mal, wenn Sie einen Verlauf ändern, haben alle Commits nach der Änderung neue SHA1-Summen. Wenn Sie nur das Repo oder eine ausgewählte Gruppe von Personen verwenden, mit denen Sie problemlos kommunizieren können, können Sie den Verlauf aufräumen oder filtern (siehe unten), und dann müssen sie manuell zurückgesetzt werden, wenn sie abgeholt werden alle ihre Zweige gehen zu den neuen Köpfen. Wenn dies nicht die Situation ist, dann müssen Sie nur damit leben, leider. Sobald der Verlauf veröffentlicht wurde, darf er nicht geändert werden.

Jetzt können Sie Commits mit Git Rebase entfernen. Das ist langsam und schmerzhaft, aber es könnte funktionieren. Sie können auch git filter-branch verwenden, um alle Binärdateien zu entfernen. Ich musste das bei einem Repo machen und das ist ziemlich einfach. Wenn sich alle Ihre Binärdateien in einem einzigen Verzeichnis befinden, können Sie das Flag --subdirectory von git filter-branch verwenden (lesen Sie die Hilfeseite natürlich), um bei allen Commits im angegebenen Bereich im Verlauf des Verlaufs alles aus diesem Unterverzeichnis zu entfernen . Wenn sie verstreut sind, können Sie git filter-branch eine Shell-Befehlszeile oder ein Shell-Skript geben, das bei jedem Commit ausgeführt wird, und dieses Skript kann die Binärdateien und alles, was Sie entfernen oder ändern möchten, loswerden . Siehe auch die Hilfeseite. Aber ich denke, Git Filter-Branch ist definitiv der Weg in einer solchen Situation zu gehen.