2010-12-07 21 views
3

私は地元のRedmineサーバーでホストされているたくさんのバイナリを持つ大規模な古いgit repoを持っています。私は特定の日付(6か12か月前)の前にすべてのコメントをまとめて、私のレポのサイズを保存したいと思っています。スカッシュgitの履歴

これを行う方法はありますか?

答えて

3

履歴を変更するたびに、変更後のすべてのコミットに新しいSHA1合計が適用されます。レポを使用している場合や、簡単にコミュニケーションできる人のグループを選択している場合は、スカッシュまたはフィルタリング(下記参照)で履歴をクリーンアップしてから、フェッチする際に手動でリセットする必要がありますすべての枝が新しい頭に向かう。これがではない場合は、の状況では、残念ながらそれで生きなければなりません。履歴が公開されると、それは変更されません。

これで、git rebaseを使用してコミットを削除できます。それは遅くて苦しいですが、うまくいくかもしれません。 git filter-branchを使ってすべてのバイナリを削除することもできます。私は自分でレポでこれをしなければならず、かなり簡単です。すべてのバイナリが1つのディレクトリにある場合は、git filter-branchの--subdirectoryフラグを使用して(もちろん、ヘルプページを参照してください)、指定された範囲内のすべてのコミットのすべてのサブディレクトリから履歴をすべて削除します。それらがばらばらになっている場合は、git filter-branchにシェルコマンドライン、あるいはすべてのコミット時に実行するシェルスクリプトを渡すことができ、そのスクリプトはバイナリを削除したり削除したり削除したりできます。ここでも、ヘルプページを参照してください。しかし、私はgit filter-branchがこの種の状況に確実に行く方法だと考えています。