2010-02-12 23 views
6

Ok, circa 700 commit fa (> 30 giorni) Ho accidentalmente salvato ThirdParty/mapper/Songbird_1.2.0-1146_windows-i686-msvc8.exe (tipo di download iTunes) nel mio repository Git locale senza accorgertene, che è stato anche spinto al repository git hosted remoto, ho notato l'altro giorno il repository era superiore a 200mb, mentre mi aspettavo circa 20 mb.Bad commit to Git

Ho seguito le istruzioni in: http://github.com/guides/completely-remove-a-file-from-all-revisions

Oltre a gestire git gc --aggressive --prune, ma la directory locale rimane al di sopra di 200 MB. Prima di poter ordinare il repository remoto ho bisogno di ordinare il mio locale, c'è qualcosa di speciale nel mio caso (cioè un file enorme, molto tempo fa commit). Come posso rimuovere completamente questo file e portare la directory alla dimensione corretta?

Nota per evitare la migrazione: ritengo che questo sia più adatto a StackOverflow poiché Git è principalmente uno strumento di sviluppo locale al momento, supportato dalla comunità e non fa parte di alcuna distribuzione o aspettativa degli amministratori di sistema, ovvero nei momenti che conoscono il amministratore di git il meglio.

risposta

3

ho scritto su un problema simile in "git: shrinking Subversion import."

Il git filter-branch manpage ha una lista di controllo per il restringimento di un repository che consiglia di eseguire filter-branch e poi la clonazione a lasciarsi alle spalle il cruft.

Clonazione con un percorso di file system rende hardlinks, in modo da utilizzare un URL:

$ git clone file:///home/gbacon/src/dBTools.git 

Anche dopo aver fatto questo, alcune grandi chiazze senza nome erano sopravvissuti il ​​clone. Grazie alla #git su freenode per il suggerimento di asportare il reflog:

$ git reflog expire --verbose --expire=0 --all 
$ git gc --prune=0