私は最近、私は今
git filter-branch --subdirectory-filter foodir -- --all
gitのフィルタ分岐--indexフィルタ後のクローン化されたリポジトリへの影響は何ですか「gitのRMは...」
と共有gitリポジトリからいくつかのサブディレクトリを抽出していますサブディレクトリを中央共有リポジトリに残しておき、削除したいと考えています。 Web検索でわかった限り、古いディレクトリを履歴から削除するには、
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
のようなものを使用する必要があります。
私はこれがうまくいくと思いますが、リポジトリが共有されている場合は履歴から何かを削除するのが最善の方法かどうか疑問に思っています。ローカルクローンを持つ全員が基本的にリポジトリをクローンしますか?
私の究極の質問は、これらの前提に忠実か、誰もがリポジトリを再度クローンする必要なく、履歴の複数の支店からディレクトリを削除する方法ですか?
UPDATE
だから私はいくつかのテストを実行し、現在、このコマンドで実行されている: git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch -- Dir1 DIR2' --prune-empty --tag-name-filter cat -- --all
動作しますが、それはまた、完全に理解できるが、望ましくないとする、すべてのコミットのすべてのSHA-1のキーを変更します。そして、それは誰もがリポジトリを再クローンしなければならないことを意味し、Gitweb経由の以前のすべてのリンクは壊れてしまいます。
ここで、ディレクトリ内のファイルを単に削除することに決めました。それらの削除をコミットすることは、セキュリティ上の問題ではなく、残りの履歴に含めることです。しかし、誰かが良いアイデアを持っている場合は、まだ回答してください – AGrunewald