2012-02-11 8 views
16

私はグーグルとネットを中心に様々な記事を読み、私が試したされています:Gitで "WARNING:Ref 'refs/heads/master'を使わずにファイルを永久に削除するには?

git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch Launcher\lib" --prune-empty -- --all

git filter-branch --tree-filter "rm -rf Launcher\lib" --prune-empty -- --all

すべてに結果:

警告:Ref 'refs/heads/master'は変更されていません

このリポジトリの他のクローンと中央サーバもあります。私は理解しているように、クローンを持つ他の人がフェッチし、リベース(マージしない)するだけで、サーバーへの変更をプッシュします。彼らは変更を加えた場合でもまだ動作しますか?

+0

フィルタブランチの後に何か変更されましたか? – Andy

+0

いいえ、ファイルシステムは同じで、履歴にファイルがあります。 – Tower

+0

最後のレポ履歴に関して、speed以外のコマンドの 'index-filter'と' tree-filter'バージョンの違いはありますか? '--'、' --all'と '--prune-empty'は何をしますか? –

答えて

21

私は問題を解決しました。それは間違った経路でした。これに

Launcher\lib

:私はこれを変更し

Launcher/lib/

を、今では動作します。)

+1

+1ありがとうございました...参考に手術をしようとしていました/ * –

+0

同様に、 'git mv'でファイルを移動した場合、古いコミットはまだ古い場所を参照していますので、' rm'する必要があります新しい場所ではなく、新しい場所ではありません(または両方で実行します)。 –

7

私は私が持っていたので、つもりは将来の参考としてここにこれを入れてよ同じ問題: cmder(または他のConEmuフレーバー)を使用する場合は、一重引用符の代わりに二重引用符を使用してください。私はそのエラーを得たときに問題だった

git filter-branch --force --index-filter \ 
"git rm --cached --ignore-unmatch 'server/bin/some file.txt'" \ 
--prune-empty --tag-name-filter cat -- --all 

あなたの住所にいくつかのホワイトスペースを持っている場合にも、引用符でパスを包みます。

関連する問題