[解決済み] Git 過去のコミットからファイルを削除するには?
2022-06-25 13:54:18
質問
私は 56f06019 という ID のコミットを持っています(例)。そのコミットで、私は誤って大きなファイル (50Mb) をコミットしてしまいました。別のコミットで私は同じファイルを追加しますが、正しいサイズ(小)です。今、私がクローンするとき、私のレポはあまりにも重いです :( 私のレポのサイズを減らすために、レポの履歴からその大きなファイルを削除するにはどうすればよいですか?
どのように解決するのですか?
の第9章では プロ Git に関するセクションがあります。 オブジェクトの削除 .
ここで簡単に手順の概要を説明します。
git filter-branch --index-filter \
'git rm --cached --ignore-unmatch path/to/mylarge_50mb_file' \
--tag-name-filter cat -- --all
前に説明したリベースオプションのように
filter-branch
は書き換え操作です。公開履歴がある場合は
--force
を押してください。
は
filter-branch
のアプローチよりもかなり強力です。
rebase
アプローチよりもかなり強力です。
- は、すべてのブランチ/参照で一度に作業することができます。
- タグの名前を即座に変更できる
- ファイルの追加以降に複数のマージコミットがあったとしても、きれいに動作します。
- ファイルが (ブランチの) 歴史の中で何度も (再) 追加/削除されたとしても、きれいに動作します。
- は新しい無関係なコミットを作成するのではなく、それらに関連するツリーを変更しながらそれらをコピーします。これは、署名されたコミットやコミットノートなどのようなものが保存されることを意味します。
filter-branch
はバックアップも取っているので、リフロッグやガベージコレクトを失効させない限り、レポのサイズはすぐには減らないでしょう。
rm -Rf .git/refs/original # careful
git gc --aggressive --prune=now # danger
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] ローカルファイルシステムからファイルを削除せずに、Git リポジトリからファイルを削除する
-
[解決済み] Git でファイルの一部分のみをコミットする
-
[解決済み】Gitバージョン管理でファイルの変更履歴を見る
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】現在のブランチの先端がリモートブランチより遅れているため、更新が拒否されました。
-
[解決済み】マージ後のコミットでGitエラー - fatal: マージ中に部分コミットができない
-
[解決済み】Git サブモジュール head 'reference is not a tree' エラー
-
[解決済み】ERROR: Error cloning remote repo 'origin'.
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み】ローカルに変更があるにもかかわらず、git pushが「すべて最新」と言う
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push s...
-
[解決済み] GitHubでコミットを削除するにはどうしたらいいですか?重複
-
[解決済み] Git リポジトリのコミット履歴から大きなファイルを削除/消去する方法は?
-
[解決済み] filter-branch --tree-filter の後に refs/original/heads/master を git repo から削除しますか?