Penso che tu sia sulla strada giusta con il comando git filter-branch
che hai provato. Il problema è che non l'hai detto di mantenere il file in qualsiasi commit, quindi viene rimosso da tutti loro. Ora, non penso che ci sia un modo per direttamente dire allo git-filter-branch
di saltare qualsiasi commit. Tuttavia, poiché i comandi vengono eseguiti in un contesto di shell, non dovrebbe essere troppo difficile utilizzare la shell per rimuovere tutto tranne l'ultimo numero X di revisioni. Qualcosa di simile a questo:
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))'
che avrebbe mantenuto big_manual.txt
negli ultimi 10 commit.
Detto questo, come ha detto Charles, non sono sicuro che questo sia l'approccio migliore, poiché in effetti stai annullando l'intero punto di VCS eliminando le vecchie versioni.
Hai già provato a ottimizzare il repository git con git-gc
e/o git-repack
? In caso contrario, potrebbe valere la pena provare.
fonte
2009-05-31 01:47:27
Penso che sarebbe d'aiuto se avessi dato qualche informazione in più su questo file e su cosa stai cercando di fare. Si tratterà di un evento unico o pianifichi di eliminare il file e di riscrivere regolarmente la cronologia del repository? Perché stai seguendo il file in git se non hai bisogno di mantenere la sua cronologia? Quanto è grande il tuo repository nudo ed è davvero un problema se è grande? –
è un manuale per il mio programma, sto scrivendo usando Apple Pages (word processor) e include molte immagini. Lo immagazzino in GIT soprattutto per poterlo condividere tra il mio computer fisso e il mio portatile, e così posso annullare nel caso qualcosa vada storto. Il repository è attualmente 450 MB. Esito a lavorare con il file perché so che le dimensioni del repository aumentano .. Invece di ripensare alla mia soluzione di backup ho pensato che sarebbe stato meglio sbarazzarsi delle revisioni più vecchie. Prendo giornalmente un'istantanea completa del repository e la carica, ma la quota del disco è di 3 GB. – neoneye
sì, spero che sia possibile farlo di tanto in tanto. – neoneye