Ich glaube, Sie auf dem richtigen Weg sind mit dem git filter-branch
Befehl Sie versuchen. Das Problem ist, dass Sie es nicht angewiesen haben, die Datei in einem Commit zu behalten, so dass sie von allen entfernt wird. Nun, ich glaube nicht, dass es eine Möglichkeit, direkt zu ist sagen git-filter-branch
alle Commits zu überspringen. Da jedoch die Befehle in einem Shell-Kontext ausgeführt werden, sollte es nicht allzu schwierig sein, die Schale zu verwenden, um alle außer der letzten X Anzahl der Revisionen zu entfernen. Etwas wie folgt aus:
KEEP=10 I=0 NUM_COMMITS=$(git rev-list master | wc -l) \
git filter-branch --index-filter \
'if [[ ${I} -lt $((NUM_COMMITS - KEEP)) ]]; then
git rm --cached --ignore-unmatch big_manual.txt;
fi;
I=$((I + 1))'
Das big_manual.txt
in den letzten 10 Commits halten würde.
Das gesagt, wie Charles erwähnt hat, bin ich nicht sicher, dass dies der beste Ansatz ist, da Sie in Wirklichkeit den ganzen Punkt von VCS rückgängig machen, indem Sie alte Versionen löschen.
Haben Sie bereits versucht, das Git-Repository mit git-gc
und/oder git-repack
zu optimieren? Wenn nicht, könnten diese einen Versuch wert sein.
Ich denke, es würde helfen, wenn Sie mehr Informationen über diese Datei und was Sie versuchen, zu tun. Ist dies ein einmaliges Ereignis oder planen Sie, die Datei regelmäßig zu löschen und den Repository-Verlauf neu zu schreiben? Warum verfolgen Sie die Datei in git, wenn Sie ihren Verlauf nicht behalten müssen? Wie groß ist Ihr blankes Repository und ist es wirklich ein Problem, wenn es groß ist? –
es ist ein Handbuch für mein Programm, ich schreibe mit Apple Pages (Textverarbeitung) und es enthält eine Menge Bilder. Ich speichere es hauptsächlich in GIT, damit ich es zwischen meinem stationären Computer und meinem Laptop teilen kann, und mache es für den Fall, dass etwas schief geht. Das Repository ist derzeit 450 MB. Ich zögere, mit der Datei zu arbeiten, weil ich weiß, dass die Repository-Größe zunimmt. Anstatt meine Backup-Lösung zu überdenken, dachte ich, dass es besser wäre, die ältesten Revisionen loszuwerden. Ich mache täglich einen vollständigen Snapshot des Repositorys und lade es hoch, aber das Festplattenkontingent beträgt 3 GB. – neoneye
Ja, ich hoffe, dass es von Zeit zu Zeit möglich ist. – neoneye