git pullを実行しようとすると、次のエラーが発生します。
ファイル'lib/xxx.jar'のリンク解除に失敗しました。もう一度やり直しますか?(y / n)
yとnのどちらを選択しても、引っ張ったり押したりできる状態にはなりません。
これは通常、プロセスがまだその特定のファイルを使用していることを意味します(まだハンドルがあります)
(Windowsでは、ProcessExplorer
その種のプロセスを追跡するのが得意です)
他のプログラムを閉じて、もう一度やり直してくださいgit pull
。
GIT_ASK_YESNO
変数を使用した代替手段があることに注意してください。
2019年1月の更新:
これは、Git 2.21(2019年第1四半期)でさらに修正されるはずです。「git gc
」と「git repack
」は、削除する前に不要であるとわかった開いているパックファイルを閉じなかったため、開いているファイルを削除できないプラットフォームでは機能しませんでした。
これは修正されました。
Johannes Schindelin()によるcommit 5bdece0(2018年12月15日)を参照してください。( Junio C Hamanoによってマージされました---コミット5104f8f、2019年1月18日)dscho
gitster
gc
/repack
:必要に応じてパックをリリースWindowsでは、プロセスによって保持されているハンドルがまだある場合、ファイルを削除したり名前を変更したりすることはできません。
これを改善するために、close_all_packs()
関数を導入しました。以前は、不要になったパックを削除
git gc
したい場合に備えて、パックが生成される直前にリリースされるようにしました。gc
しかし、この開発者は、たとえばオプション
gc
を介してすべてのパックを統合する場合など、パック自体も手放す必要があることを忘れていました。--aggressive
同様に、
git repack -d
廃止されたパックを削除したいので、すべてのパックハンドルも閉じる必要があります。
2016年1月の更新
これはGit2.8(2016年3月)で修正されるはずです(以下のGit 2.19、2018年第3四半期を参照)
Johannes Schindelin()によるcommit d562102、commit dcacb1b、commit df617b5、commit 0898c96(2016年1月13日)を参照してください。( Junio C Hamanoによってマージされました---コミット3c80940、2016年1月26日)dscho
gitster
fetch
:ガベージコレクションの前にパックファイルを解放する自動gcを実行する前に、パックファイルを再パックしてガベージコレクションする必要がある場合に備えて、パックファイルがリリースされていることを確認する必要があります。
終了する前に""を実行する多くのコードパスは、
gc --auto
パックファイルをマップしたままにし、ファイル記述子を開いたままにしました。これは、開いているファイルを削除できないシステムには適していませんでした。
彼らは今、そうする前にパックを閉じます。
git-for-widows
これで問題500が修正されます。
新しいアプローチを検証するために使用されたテストを見ると、(Git 2.8がまだリリースされていないため)考えられる回避策は、人為的に上げることgc.autoPackLimit
です。
git config gc.autoPackLimit 10000
git fetch
git config gc.autoPackLimit 50 # default value
git 2.8.4(2016年6月)は、問題を軽減する必要がある問題755について言及しています( commit 2db0641):
一時ファイルハンドルが子プロセスに継承されていないことを確認してください
実際、上記のgit-for-windows
問題500
は、2018年第3四半期のGit 2.19で実際に修正されています。
「Git-ファイルのリンクを解除し.idx
て.pack
失敗しました(このファイルへの唯一のプロセス所有ハンドルはgit.exe
)」を参照してください。
これはWindows固有の回答なので、あなたには関係がないことを認識しています...将来の検索者のために含めています。
私の場合、それは私が昇格されていないコマンドラインからGitを実行していたためでした。「管理者として実行」で修正されました。
私にとっては、VisualStudioがプルから変更されたすべてのファイルをリロードしようとしたためです。Visual Studioを更新してから、を実行しgit gc
ます。
GitHub for Windowsを使用しているWindowsで、実行時にシェルで同様のエラーが発生しましたgit gc
:
Unlink of file '.git/objects/pack/pack-0b40ae7eae9b83edac62e19c07ff7b4c175244f6.idx' failed. Should I try again? (y/n)
GitHubGUIを閉じて解決しました。
一部のファイルがロックされている可能性があるため、Apacheまたは他のWebサーバーを再起動してみてください。
Visual StudioとRubymineを閉じて、エラーが再発しませんでした。それらの1つは犯人でした。
IDEを閉じてから実行しますgit pull
。それが動作します。
私もこの問題を抱えていますが、UEを使用してEclipseワークスペースを整理および編集したため、途中でUltraEditであることがわかりました~~
UEが特定のファイルの古いバージョンを処理しているためか、Gitはそのファイルのリンクを解除できませんでした。
UltraEditを閉じた後、問題は二度と発生しませんでした。
これは私の場合、LESSコンパイラであるSimpLESSが原因でした。システムトレイで閉じる必要があります。
上記の答えはどれも私にはうまくいきませんが、forceオプションを指定してgit gcコマンドを実行すると、私のケースは解決しました。
'git gc --force'
[Windows 7、管理者として実行=>コマンドプロンプト]
問題は、これらのファイルを処理するプログラムがあるためです。Unlockerを使用して、それを処理しているプログラムを見つけることをお勧めします。
私はこれをWindowsXPで発生させましたが、メッセージがループでスタックしていることと、返信することでクリアできることの両方があります。
Git-GUIを閉じることで、ループのスタックの発生が解消されました。(私はbashシェルでgit merge -iを実行していました。)
他の発生は、おそらく私のリポジトリ内のファイルの数が多いことが原因で発生しました。これは主に.codファイルで発生しましたが、後でバージョン管理から除外します。(最初にそれらを追跡する理由があります。)原因は、Gitがファイルハンドルを使用する速度に関連している可能性があると思います。
以前の2人の投稿者がWindowsについて言及しており、他のオペレーティングシステムに問題があるとは誰も言っていないので、返信によってクリアできる問題はWindowsに関連しているのではないかと思います。
PHPStormを開いて閉じて、すべてが順調でした。
同じ問題が発生し、WindowTaskManagerから関連するすべてのプログラムを閉じました。しかし、それはまだ機能していませんでした。興味深いのは、「Gitpull」の代わりに「Gitrebase」を実行したところ、うまくいったことです。
コマンドラインエディタを管理モードで実行して、コマンドを実行してみてください。それは問題を助け、解決します。:)
私の場合、問題の原因となっているタグをプルーニングする古い方法がありました。オリジナルの設定を解除して解決しました。
git config --global --unset remote.origin.fetch '\+refs/tags/\*:refs/tags/\*'
次に、これをサーバー上の削除されたブランチのプルーニングに追加します。
git config --global fetch.pruneTags true
私は同じエラーに直面し、ファイルが使用されているときに日食を閉じて再度プルすることで解決しました。
Windowsでも同じ問題が発生しました。Ubuntu VMでファイルにアクセスしているときに、Windowsでgcを実行しようとしました。Ubuntuのクローズドターミネーターとファイルエクスプローラーは私のために働いた。