web-dev-qa-db-ja.com

git gcエラー:再パックメッセージの実行に失敗しました

実行したところgit gcローカルリポジトリで定期的なクリーンアップを行います。今日は初めて、失敗しました。これが私がやったことです:(Windows 7)

C:\Source\TxTranslation>git gc
Counting objects: 880, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (540/540), done.
Writing objects: 100% (880/880), done.
Total 880 (delta 504), reused 589 (delta 333)
rm: cannot unlink `pack-18179305b5b5dbdaf059e4ded50b736ab93e220c.pack': Permission denied

C:\Source\TxTranslation>git gc
Counting objects: 880, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (369/369), done.
Writing objects: 100% (880/880), done.
Total 880 (delta 504), reused 880 (delta 504)
mv: cannot move `/c/Source/TxTranslation/.git/objects/pack/pack-3002d22690e007a4205f6ecfa19d6e93296fdd78.pack' to `/c/Source/TxTranslation/.git/objects/pack/old-pack-3002d22690e007a4205f6ecfa19d6e93296fdd78.pack'
error: failed to run repack

何度でも再試行できます。常に2回目の出力を取得します。上記の「許可が拒否されました」エラーはナンセンスです。最近の多くのWindowsシステムで見られる一般的な偽のエラーだと思います。すぐに削除できないように、ファイルを開いたままにするウイルススキャナが原因である可能性があります。それはあらゆる種類の問題につながりますが、どうやら避けられないようです。

これは問題ですか?何か壊れていますか?これらのメッセージが私にとって何を意味するのか、私には絶対にわかりません。 diffを使用してログを参照しても引き続き機能します。その問題を解決するにはどうすればよいですか? (幸運なことに、私は直前にすべてをGithubにプッシュしたので、単純に再クローンすることができましたが、再び発生した場合に備えて、最初に修正してみたいと思います。)

33
ygoe

判明したように、Visual StudioはGitのファイルの一部をロックしていました。 Visual Studioを閉じることで問題が解決しました。

FTR、VS2010でGitソース管理プロバイダー(最後に使用可能なバージョン0.6.4)を使用しています。たぶん、これは原因の一部です。

31
ygoe

私の場合 git gcは列挙後に再パックの実行に失敗しますが、いくつかの追加オプションを使用して実行すると成功しました、git gc --aggressive --Prune=now

20
jake.lange

Eclipseを使用して同じ問題が発生しました。は、Eclipseおよびgit bashを介してgitリポジトリにアクセスしていました。

Eclipseを閉じた後にGCを実行して解決しました

環境

Windows 7

Git 1.8.4.mysysgit.0

EclipseケプラーSR2

9
arunvg

gitを使用して他の操作を行っていた場合、またはGUIでgit関連の操作を行っていた場合は、操作をキャンセルするかエラーを閉じて、手動でgit gcを実行し、操作を再試行してください。基本的に、Windowsでは、このメッセージはgitコマンドラインクライアントと他のプログラムとの競合を示しています。

私の場合、git pullの一部として再パックが自動的にトリガーされました。エラーが発生したとき、gitプロセス(IDE、git bash、git GUI)を起動するもののどれも昇格されていないことを簡単に健全性チェックで許可の問題を除外した後、 Processエクスプローラー ファイルを開いたプロセスを検索し([検索]-> [ファイルハンドル]または[DLL])、他のgit.exeプロセスの親であるgit.exeを見つけました。 Windowsでは適切ではない自動再圧縮コードには、OSレベルでファイルを開くとファイルに排他的な読み取り/書き込みロックが設定されるロックの前提があると推測しています。

でした

$ git --version
git version 1.9.2.msysgit.0
5
rakslice

これが他の人の役に立つことを願っています。

私の場合、Tortoise Gitプロセスがファイルをロックする原因であることがわかりました。プロセスを終了すると、git gc

4
Dave Hogan

私の場合、実行中のIISExpressインスタンスが原因でした。

3
Mark Brownsword

これは、Visual Studioでソリューションを閉じた後でも起こりましたが、VSを閉じたときに解決されました。私はgitソース管理拡張機能を使用していませんでした。

1
mfugel