[解決済み] git filter-branchのファイルを大量に削除する。
2022-03-04 22:19:42
質問
リポジトリをsvnからgitに移行しています。
この最後のステップでは、履歴から不要なファイルを大量に削除したいと思います。
以下のコマンドを試しています。
git filter-branch --prune-empty --index-filter \
"for file in $(cat files); do git rm -rf --cached --ignore-unmatch ${file}; done" -f
しかし、引数リストが長すぎるとのことです。
のように書き換えることができるんだ。
for file in $(cat files); do
git filter-branch --prune-empty --index-filter \
"git rm -rf --cached --ignore-unmatch ${file}" -f
done
しかし、filter-branchを何度も実行することになるし、履歴も長くなるので、時間がかかりすぎる。
たくさんのファイルを削除して、より速くfilter-branchする方法はないのでしょうか?
解決方法は?
を使うことをお勧めします。
BFG
に代わる、よりシンプルで高速な
git-filter-branch
特に、Git の履歴から不要なファイルを削除するために設計されています。
に記載されていますね。 コメント 問題ファイルは一般に大きなバイナリであり、BFGはこれを処理するための特別なオプションを持っていること - あなたは慎重にBFGの 使用方法 ということですが、核心部分はこれだけです。
$ java -jar bfg.jar --strip-blobs-bigger-than 10M my-repo.git
10MBを超えるサイズのファイル(あなたの
最新の
コミット) は、Git リポジトリの履歴から削除されます。このとき
git gc
を実行して、死んだデータを一掃します。
$ git gc --prune=now --aggressive
BFGは通常、少なくとも
10-720x
よりも速い
git-filter-branch
そして、一般的に使いやすくなっています。
全文公開:私はBFGレポクリーナーの作者です。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] masterブランチと'origin/master'が分岐している、'undiverge'ブランチの方法は?
-
[解決済み】ローカルにない作業がリモートに含まれているため、アップデートが拒否された
-
[解決済み】gitがローカルバージョンをリモートバージョンに置き換える
-
[解決済み] [email protected] へのいくつかの参考文献のプッシュに失敗しました。
-
[解決済み] このリポジトリで別の git プロセスが実行されているようです。
-
[解決済み] VSTS Git Fetch Failed with exit code: 128
-
[解決済み] git でディレクトリ階層が異なる 2 つのブランチをマージするには?
-
[解決済み] git status に fatal: bad object HEAD と表示される。
-
[解決済み] git rebase: "error: cannot stat 'file': パーミッションが拒否されました"
-
[解決済み] "fatal: This operation must be run in work tree." というメッセージが表示されるのはなぜですか?