Gitリポジトリからのファイルのパージに失敗し、新しいバックアップを作成できません


116

次のコマンドを実行して、リモートリポジトリからファイルを削除しようとしました。

git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD

しかしGitは不平を言います

新しいバックアップを作成できません。以前のバックアップはrefs / original /にすでに存在し
ます-fでバックアップを強制的に上書きします
rm:/. git-rewrite /backup-refsを削除できません:権限が拒否されました
rm:ディレクトリを削除できません/.git-rewrite:ディレクトリが空ではありません

これは、Windowsで.git-rewriteディレクトリをすでに削除した後です。

どうすればそのファイルを削除できますか?これは私のリポジトリにある29Mbファイルなので、ファイルを削除する必要があります。

でコミットを削除しようとしましgit rebase -iたが、コミットが多くの異なるファイルに影響を与えたためと思われ、Gitは競合を訴え、安全のために中止しました。


1
検索エンジンの場合:これは、エラーメッセージがの場合にも当てはまります.git-rewrite already exists, please remove it
Drew Noakes 2015年

回答:


219

フィルター分岐操作は既に実行されています。フィルターブランチの後、Gitは何かがうまくいかない場合に備えて、古いコミットへの参照を保持します。

あなたはそれらを見つけることができます.git/refs/original/…。そのディレクトリとその中のすべてのファイルを削除するか、-fフラグを使用してGitに古い参照を強制的に削除させます。

git filter-branch -f \
--index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD

10
ついに動作しました、ありがとう!私は-fフラグを試しましたが、問題はそれをコマンドの最後に置くことでした。ヘッド-f。あなたのコマンドを見て私は最初にフラグを付けようとしました、そしてそれはうまくいきました!= D
Cardin

12
オプションフラグ(-f)は、参照(HEAD)の前に移動します。refs go last
knittl '06 / 06/20

-fを追加し、ディレクトリを削除した後も、同じエラーが発生します。何か案は?
Yaron、2015

1
@knittl、私は言及していませんでしたgit add.git/refs/original/フォルダーを削除-fしてgit filter-branchコマンドでフラグを使用した後でも、元のポスターと同じエラーを受け取りました。私の場合、解決策は.git/packed-refsファイルを削除することでした。
Yaron、2015

1
@knittl、私はそれを修正する方法を見つけましたが、問題が何であるかを見つけられませんでした。基本的に、--ignore-unmatchコマンドに追加してgit rmスムーズに進みました!
Gabrielius、2015年

21

このコマンドを使用して、元のバックアップを削除します。

git update-ref -d refs/original/refs/heads/master

これは、gitリポジトリをフィルター分岐するために使用した要点です。https//gist.github.com/k06a/25a0214c98bc19fd6817


これはバックアップを削除するための正しいソリューションです!削除.git/refs/original/しても問題は解決しません。
Erik Koopmans、2018年

必ず 'master'を修正しようとしているブランチに変更してください。私の場合は 'develop'
Damian Green

git show-ref | awk '/ refs.original.refs/{print$2}'リポジトリのすべてのバックアップを見つけるため。
ダン

4

私は同じ問題を抱えていましたが、上記の答えはそれを修正しませんでした。.git / refs / original /ディレクトリが残っていません。私の解決策は、.git / packed-refsファイルを削除することでした。


同じ問題。.git/packed-refsただし、ファイルやフォルダoriginalはありません.git/refs。誰でも?
XedinUnknown 2015年

コマンドにフラグを追加することにより、ここで解決しまし-r
XedinUnknown 2015年

ここでも同じ問題。pack-refsを削除すると問題は解決しましたが、残りのgitディレクトリも台無しになり、バックアップから復元する必要がありました。
Kevin Yin

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.