2012-02-08 8 views
5

私は3年分のPowerBuilderバイナリファイルでgit repoを手に入れました。レポは非常に巨大で(ちょうど10GB未満です)、gitはバイナリデルタのために非常に多くを行うことができるという事実のために仮定します。バイナリでいっぱいのgit repoで古い履歴を取り除く

私はこのレポを管理しやすいサイズにしたいと思っています。私はそれを行うための初期の歴史をたくさん残していきたいと思います。私はちょうどそれを行うにgitを取得する方法を把握することはできません。私はインタラクティブ・リベースを使ってコミットを試みましたが、対処したくない矛盾が出てきます。

コミットを選択する方法はありますか?その前にすべてを捨ててください。後続のコミットのためにSHA-1を書き換えることに気づきましたが、問題はありません。

+0

rebaseとsquashesを使用して、以前のすべてのコミットを確実に圧縮できます。私はまだあなたが非常に多くのコミットを持っているなら、それを行うためのエレガントで速い方法を考えています。 – TheBuzzSaw

答えて

0

ショー全体を1回のコミットにリベースすることができます。 fsckgc実行に続いて、その後

git rebase -i [some early commit] 

ような何かとほぼすべてのそれらのスカッシュするvimの中で視覚的なブロックモードを使用することが最も簡単でしょう。

git filter-branchを使用すると、コミットをツリーから完全に削除できます。上記の例では、範囲master~5..masterでコミットを取り、そのうちの新しいレポを作成します

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

1

これは、1つの(他の)方法です。同じリポジトリも使用できますが、上記の方が安全です。

関連する問題