4

約 2030 コミットのレポがあります。コミット 2000 年頃に、ファイルが変更されたため、サイズが約 20M から 1.2 GB に誤って移動しました。履歴を書き換えてこのファイルを削除することはできますが、コミット 2000 からのみ可能ですか? (このファイルの以前の履歴を失いたくない)

私はgit-filter-branchを考えていましたが、「コミットから」と伝える方法がわかりませんでした-可能ですか?

乾杯マイク

4

3 に答える 3

2

git-filter-branchのマニュアルページには、このための決定的で信頼できる例が含まれています。

特定のコミットの前に書き換えを停止したい場合は、前に言ってtag01ください:

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

ドットの代わりに、すでに持っているものを使用してください。tag01は、代わりに任意のコミットっぽいものにすることができます(revspec)

--tag-name-filter catPS:タグを使用する場合は、これらも書き直すことを忘れないでください

于 2011-06-24T10:06:30.477 に答える
1

なぜあなたはしないのですか

  1. コミット 2000 でブランチnewを作成します。ここでは、このファイルを 1.2 GB ファイルに変更しません。
  2. にリベースmasternewマージ オプション付き-Xtheirs
  3. リポジトリをガベージ コレクションして、ディスク領域を節約します。
于 2011-06-24T10:15:26.407 に答える
1

BFG Repo-Cleanerを試してみてください。これはgit-filter-branch、Git リポジトリから大きなファイルやプライベート データを削除するために設計された、より高速でシンプルな代替手段です。

実行可能な jar ファイル(Java 6 以降が必要) をダウンロードして、次のコマンドを実行します。

$ java -jar bfg.jar --strip-blobs-bigger-than 100MB my-repo.git

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

完全な開示: 私は BFG Repo-Cleaner の作成者です。

于 2013-02-01T22:18:48.613 に答える