私の git リポジトリには、以前のリビジョンと削除されたファイルをすべてリポジトリから削除したい大きなアセットがたくさんあります。ただし、そのディレクトリ内のファイルの最新のコピーを保持する必要があります。
これまでのところ、以前に削除されたファイルをスクラブし、最新のリビジョンを保持する必要がない方法だけを見てきました。
私の git リポジトリには、以前のリビジョンと削除されたファイルをすべてリポジトリから削除したい大きなアセットがたくさんあります。ただし、そのディレクトリ内のファイルの最新のコピーを保持する必要があります。
これまでのところ、以前に削除されたファイルをスクラブし、最新のリビジョンを保持する必要がない方法だけを見てきました。
それよりも簡単です。ルートの .git フォルダーを削除するだけです。新しいリポジトリを作成してチェックインします。また、バージョン管理の仕事は以前のバージョンをすべて保持することであり、それらを削除することではないことに注意してください。
ファイルストレージに git を使用していますが、これは意図したものではありません。
変更履歴を気にしない場合はtar.gz
、大きなアセットを含むファイル (または適切なアーカイブ/圧縮方法) を作成し、git リポジトリから参照します。おそらくスクリプトまたは Makefile を使用して、それをコピーしてアンパックします。適切な場所。
履歴からファイルを完全に (現在のバージョンを含めて!) 削除するには、次の 2 つの手順があります。
すべてのコミットからファイルを削除します。git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch FILENAME_WITH_PATH' --prune-empty --tag-name-filter cat -- --all
ファイル オブジェクトのリポジトリをクリーンアップ/パージします。rm -rf .git/refs/original/; git reflog expire --expire=now --all; git gc --prune=now; git gc --aggressive --prune=now
リモートリポジトリで作業していて、それもクリーンアップする必要がpush -f
ある場合は、十分ではないかもしれません。ゼロから再作成し、ローカル (クリーン) コピーをプッシュする必要があります。