2010-12-13 13 views
1

私は最近、私は今
git filter-branch --subdirectory-filter foodir -- --allgitのフィルタ分岐--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経由の以前のすべてのリンクは壊れてしまいます。

+0

ここで、ディレクトリ内のファイルを単に削除することに決めました。それらの削除をコミットすることは、セキュリティ上の問題ではなく、残りの履歴に含めることです。しかし、誰かが良いアイデアを持っている場合は、まだ回答してください – AGrunewald

答えて

1

他のユーザーが既にコミットしている場合、コミットを静かに変更することはできません。これはGitの仕組みであり、それは機能です。

+0

私はそれが機能であることを知っていますが、私は目標を達成するための最も破壊的な方法は何ですか? – AGrunewald

+0

'git pull -f'はおそらく最も混乱しないでしょう。ローカル履歴を上書きします。しかし、まだ各リポジトリでそれを行う必要があります。 – Bartosz

関連する問題