2011-06-24 16 views
4

約2030件のコミットがあるレポがあります。約2000年にファイルが修正され、誤ってサイズが約20Mから1.2GBに変化しました。このファイルを削除するために履歴を書き換えることは可能ですが、コミット2000からのみ可能ですか? (私はこのファイルの過去の履歴を失いたくない)(特定の時点から)git repoからファイルを完全に削除しました

私はgit-filter-branchと思っていましたが、 "コミットから"それを伝える方法は見当たりませんでしたか?

乾杯 マイク

答えて

2

gitのフィルタ分岐のmanページは、このために決定的と権威の例が含まれています。

あなたは、特定のコミット前に書換えを中止したい場合は、tag01前に言う:あなたはすでにドットのために持っているもの

git-filter-branch ...... -- master ^tag01 

代用。 tag01ではなく、任意のコミットっぽい(revspec)であってもよい

PS:あなたがタグを使用する場合は、これらのあまりに

1

なぜ

  1. がで枝newを作成しませんを書き換える--tag-name-filter catを忘れないでくださいあなたは-Xtheirs
  2. ごみマージオプションで、newに1.2ギガバイトのファイル
  3. リベースmasterにこのファイルを変更し、ディスク領域を節約するためのリポジトリを収集することはありません2000、コミット。
1

あなたはGitのリポジトリから大きなファイルやプライベートなデータを除去するために設計されgit-filter-branchに速く、より簡単な代替、BFG Repo-Cleanerをしようとする場合があります。

ダウンロードthe executable jar(上記のJava 6以上が必要です)、このコマンドを実行します。

$ます。java -jar bfg.jar --strip-塊-大きな-よりも私の-repo.git

を100MB

サイズが100MBを超えるもの(つまり、最新のコミットのファイル階層に含まれていないもの)は、リポジトリの履歴から完全に削除されます。 100MBより小さいファイルのすべてのバージョンは、質問に指定されているように、単独で放置されます。

全開示:私はBFG Repo-Cleanerの著者です。

関連する問題