0

Gitcleansmudgeフィルターを使用して、作業ツリーとは異なる表現をリポジトリーに格納できます。クリーンフィルターをさかのぼって適用するために、私は実行することができます

git filter-branch --tree-filter /the/script.sh -- --all

スクリプトが、リードする必要のあるファイルにアクセスする場所clean。残念ながら、これはコミットごとに作業ツリー全体を更新するため、かなり遅くなります。内にきれいなフィルターを再適用する方法はあります--index-filterか?

4

2 に答える 2

1

はい: インデックス フィルターで、 do を実行し、好きなように操作しgit checkout -- path/to/fileてください。git add

于 2013-01-17T03:20:52.280 に答える
0

ファイルシステムに触れずに効率的に再クリーニングするためにgit ls-files -s、再クリーニングしたいファイルに一致するようにの出力をフィルタリングしてから、

git cat-file blob BLOB_TO_RECLEAN | my-clean-filter | git hash-object -w

クリーンな表現の新しいオブジェクトを作成します。git ls-files -sこれらの新しいオブジェクト (の出力に一致するように再フォーマットされたもの) をすべて にフィードしますgit update-index --index-info。私のフィルターは、古い BLOB から新しい (クリーニングされた) BLOB への変換をキャッシュする追加の最適化を行い、特定の BLOB が 1 回だけクリーニングされるようにします。git fat index-filter完全な実装については、を参照してください。

于 2013-01-22T05:39:20.950 に答える