2012-02-08 21 views
5

Üç yıllık PowerBuilder ikili dosyaları olan bir git repo'm var. Repo oldukça büyük (10GB'ın altında), gitmenin sadece ikili deltalar için çok şey yapabildiğinden varsayıyorum.Eski geçmişe git binpo'yu tamamla (binerlerle dolu)

Bu repoyu yönetilebilir bir boyuta getirmek istiyorum ve bunu yapmak için bir sürü erken tarih atmak istiyorum. Sadece bunu yapması için gitmenin nasıl olduğunu anlayamıyorum. Etkileşimli rebase ile squashing taahhütleri denedim, ama uğraşmak istemediğim bir sürü çatışma ile geliyor.

Bir taahhüt seçmenin ve bundan önce her şeyi atmanın bir yolu var mı? SHA-1'in sonraki işler için yeniden yazacağını anlıyorum, ki sorun değil.

+0

Bir rebase ve squashes kullanarak öncelikleri tümüyle birleştirebilirsiniz. Hâlâ çok fazla işi varsa, bunu yapmanın zarif/hızlı bir yolunu düşünüyorum. – TheBuzzSaw

cevap

0

Tüm gösterimi tek bir taahhütte geri yükleyebilirsiniz. Bir fsck ve gc vadede ardından

git rebase -i [some early commit] 

ardından en kolay olurdu neredeyse hepsi ezmeye vim görsel blok modu kullanarak gibi

şey.

Alternatif olarak, atamaların tümünü ağaçtan kaldırmak için git filter-branch kullanabilirsiniz. Yukarıdaki örnek aralığında master~5..master içinde kaydedilmesini alıp bunun sonunda yeni repo yaratacak

git fast-export master~5..master | (cd ../newrepo.git && git init . && git fast-import && git checkout) 

:

1

Bu bir (başka) bir yoldur. Aynı repoyu da kullanabilirsiniz, ancak yukarıdakiler daha güvenli olacaktır.