[解決済み] Git リポジトリのコミット履歴から大きなファイルを削除/消去する方法は?
2022-03-20 13:32:24
質問
ウェブサイトのプロジェクトにDVD-ripを誤ってドロップしてしまい、その後、不注意にも
git commit -a -m ...
そして、ザッと見て、レポが 2.2 ギガほど肥大化していました。次に編集を加え、ビデオファイルを削除し、すべてをコミットしましたが、圧縮ファイルはまだリポジトリに、履歴に残っています。
これらのコミットからブランチを開始し、あるブランチを別のブランチにリベースすることができることは知っています。しかし、2つのコミットをマージして、大きなファイルを履歴に残さないようにし、ガベージコレクションの手順でクリーンアップするためにはどうしたらいいでしょうか?
どのように解決するのですか?
このシンプルで強力なコマンドを使ってみてはいかがでしょうか?
git filter-branch --tree-filter 'rm -f DVD-rip' HEAD
は
--tree-filter
オプションは、プロジェクトの各チェックアウト後に指定されたコマンドを実行し、その結果をレコメンドします。この場合、DVD-ripというファイルが存在するかどうかに関わらず、すべてのスナップショットから削除します。
巨大なファイルを導入したコミット(たとえば 35dsa2)がわかっている場合は、HEAD を 35dsa2..HEAD に置き換えることで、履歴をあまり書き換えないようにできます。したがって、まだプッシュしていない場合はコミットが分岐するのを避けることができます。この @alpha_989 さんのコメントは、ここで書き残すにはあまりに重要だと思われます。
参照 このリンク .
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] ローカルの Git リポジトリが元々クローンされた URL を特定するにはどうすればよいですか。
-
[解決済み] 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 サブモジュール head 'reference is not a tree' エラー
-
[解決済み】gitが「変更をコミットするか、マージする前にstashしてください」と言うのを解決するには?
-
[解決済み】git-mergeの-dry-runオプションはありますか?
-
[解決済み】GitHub: クローンには成功したが、チェックアウトに失敗した
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push s...
-
[解決済み】マージが終了していません(MERGE_HEADは存在します)。
-
[解決済み] Git - node_modules フォルダをどこでも無視するようにしました。
-
[解決済み] Git エラー : 'upstream' は git リポジトリでないようです。
-
[解決済み] git commit signing failed: secret key not available.
-
[解決済み] fatal: bad revision "とはどういう意味ですか?