ファイルのリンク解除に失敗しました。もう一度やり直しますか?


572

ローカルのgitリポジトリにあるファイルの1つで何か問題が発生しています。私がブランチを変更しようとしているとき、それは言います:

Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)

それはどういう意味ですか?



[Git rebaseが 'ファイルのリンク解除に失敗しました'エラーの重複の可能性があります](stackoverflow.com/questions/3698369/…
Josh Lee

与えられた答えはあなたのために機能しました、プロセスビューアが機能していない場合は再起動してファイルを削除できます。また、それが機能した場合は回答を受け入れることができます
dhaval

1
また、gitプロセスにそのファイルへの書き込み権限があることを確認してください。
boileau 2014年

回答:


752

これは、別のプログラムがファイルを使用しているために、ブランチを変更しようとしているときに、gitがファイルを作業ディレクトリに移動したり、作業ディレクトリから移動したりできないことを意味します。

私はこれをeclipseがファイルを「使用する」プログラムであるWindows Vistaで発生させました。ファイルは実際にEclipseで開かれていない可能性がありますが、Eclipseによって実行されたプロセスによって開かれている可能性があります。

このイベントでは、それを使用した可能性のあるアプリケーションでファイルを閉じてみてください。それが機能しない場合は、ファイルを開いた可能性のあるアプリケーションを完全に終了します。


53
Windowsでは、ProcessExplorerを使用して、ファイルを開いているプロセスを見つけます。
Dave C

2
「このファイルを削除できない場合(たとえば、ファイルが存在しない場合)、ファイルをスキップする」のようなスクリプトを書く方法はありますか?
2xMax

14
私の場合、それはVisual StudioとそのGitプラグインでした。
ミハウポワガ

8
Windowsでは、ProcessExplorerを使用できない場合、またはダウンロードしたくない場合は、(Windows + R)「resmon」を実行し、「CPU」タブに移動して、「関連する識別子」テキストボックスでファイル名を検索できます。
Raphael

6
使用GitKrakenする場合、リベースのようなコマンドを実行すると、これが発生する可能性があります
mtpultz

285

私はこの問題を抱えており、次のコマンドで解決しました:git gc 上記のコマンドは一時ファイルと不要なファイルを削除します。(ガベージコレクター。)


43
git pullgit gc自動的に開始され、gcはいくつかの.packファイルと.inxファイルにアクセスしようとしました。これらは、git pullコマンドを所有する「windows git」プロセスによって保持されていました。git gc手動で実行すると、git pull実際に問題が解決します。
Nikita

4
実行中、進行中git gcに同じエラーが再び発生しましたgc
Prakash K

4
「git gcを手動で実行すると-git pullで問題が本当に解決します。」これは役に立ちました。ニキータありがとうございます。
サンガム

これも私を助けました。WindowsでGit Bashを使用して実行
Ascalonian

git pullを開始した後、このエラーが発生しました。CTRL + Cを押してプルを停止し、git gcを実行してからgit pullを再度実行したところ、問題は解消され、プルを中断しても何も壊れていませんでした。
ダニエルsp

84

ここからのこの解決策は私にとってうまくいきました:

これはWindows固有の回答であるため、あなたには関係がないことは承知しています...将来の検索者のために含めるだけです。

私の場合は、昇格していないコマンドラインからGitを実行していたためです。「管理者として実行」で修正されました。


2
私のために働いた。管理者としてVSを実行し、VSからコマンドプロンプトを起動しました
Sentinel

3
I:Ctrl+Cリンクできないファイルの非常に長いリストを終了するために入力しました。gitbash、私のIDE、およびGitHub Windowsアプリケーションを終了しました。昇格された「管理者として実行」モードでgitbashを再起動しました。そして走ったgit gc --aggressive。完了するまでしばらくかかりましたが、エラーなしで完了しました。
マークマクレランド

これが重複していると思われる場合は、フラグを立てる必要があります。別の回答を指す回答を追加しないでください
Liam

2
@Liamこの質問は古いですが、この回答は他の質問にしかありませんでした。この質問に対する回答は1つだけではないため、1つだけを重複として設定することは困難です。
sepehr 2017年

これはかなりうまくいきました。以前の答えはどれもしませんでした。どうもありがとう。
Roberto Rodriguez

35

の実行中にこの問題が発生しましたgit pull

私が試したところgit gc、問題は解決しました。


Windowsマシンでこの問題に遭遇しましたが、このソリューションは最初は機能しませんでした。ただし、このコマンドを管理コマンドプロンプトから実行すると、問題は解決しました。
ウィリアムW

23

私の場合、ファイルやディレクトリにアクセスするプロセスはありません。オペレーティングシステムの制限(Windows)が原因で、パスが非常に長い場合に発生する可能性があります。以下に示すように、グローバルgit構成でロングパスサポートフラグを有効にしてみてください。

git config --global core.longpaths true

または、それが競合しない場合は、はい/いいえの回答フラグを設定してみてください

set GIT_ASK_YESNO=false

パスが長すぎると、解決策が見つかりません。


5
理由はわかりませんが、「git config --global core.longpaths true」を設定すると役に立ちました。
Maxim

GIT_ASK_YESNO、これに関する情報が見つかりません。それはどこから来たのですか ?
majkinetor 2016年

参照:stackoverflow.com/questions/3698369/…たとえば、最近のバージョンのgit(2.9)で動作するかどうかは今のところわかりません
andhdo

core.longpaths追加で:reset --hard prune gcは私にとってはうまくいきましたが、その
組み込み


10

これは誰かにとって役立つかもしれません。上記のすべてがうまくいかない場合は、次の手順に従ってください。

  1. IDE(Eclipseでしたが、Intellijなどに当てはまるかどうかはわかりません)またはgitを使用している可能性のある他のアプリを閉じます。

  2. コマンドラインからgitを開き(私の場合はgit bashを使用しました)、git gc他の人が述べたように実行します。

これは私にとって魔法でした。


これは、Android Studioを使用して私の場合を助けた唯一の答えです
0101100101

10

gitkrakenとコマンドプロンプトを使用しているため、同じ問題が発生しました。その後、git gcコマンドを実行する と問題が解決しました。だから私は幸せであり、役立つかもしれないポイントのいくつかを共有したいと思います。

git gcをしますか?

git gc 以前のgit addの呼び出しから作成された可能性のある到達不能オブジェクトを削除します。

いつ実行するgit gcか?

docから、ユーザーはこのタスクを各リポジトリ内で定期的に実行して、ディスク領域の使用率と運用パフォーマンスを維持することをお勧めします。

自動構成可能にする方法は?

一部のgitコマンドはgit gcを自動的に実行する場合があります。詳細については、以下の--autoフラグを参照してください。あなたが何をしているのかを知っていて、あなたが望むすべては、この問題をさらに考慮せずに永久に無効にすることだけであれば、

git config --global gc.auto 0

8

私の場合(Win8.1、TortoiseGit実行中)、ファイルをロックしていたのは「TortoiseSVNステータスキャッシュ」と呼ばれるプロセスでした。

それを殺すことで、それ以上問題なく「git gc」を実行することができました。上記のプロセスはTortoiseGitによって起動されるため、手動で再起動する必要はありません。


7

私はWindows 7でこの種の問題を抱えていましたが、それは孤立したgit.exeプロセスが原因であることが判明しました。

これを解決するには、タスクマネージャを開いてすべてのgit.exeプロセスを終了します。

gitコマンドは存続期間が短いため、通常はgit.exeタスクマネージャに何も表示されません。それらがそこにあるとき、それは通常何かが間違っていることを意味します、そしてあなたはそれらのプロセスを殺すべきです。


7

Windowsでこの問題が発生しました。IDE(Android Studio)を閉じ、git shellでYESを選択しました。動いた。


5

Windows 8の場合:git gcを実行したところ、git gcがすでに実行されていると表示され、git gc --forceを実行してガベージコレクターが実行されました。

次に、ブランチを切り替えて問題なくマージできます。gitgc --forceを試してください。

おそらく、GCプロセスが何らかの理由で正常に停止しなかった可能性があります。


また、Windows 10で有効です
oguzhan

4

フォルダ内の.tmpファイルでこの問題が発生しました/.git/objects/pack。プッシュまたはプル中に何かが失敗したと思うので、これらの一時ファイルを削除し、HEADを最後のコミットにリセットしました。これが助言されるかどうかはわかりませんが、私にとってはうまくいきました。また、packフォルダーに属していないファイルのgit count-objects -vリストも教えてくれました.tmp

または、ウィンドウでy / nメッセージを抑制してgit open cmd.exe実行するには:

SETX GIT_ASK_YESNO false

ここに見られる:https : //twitter.com/petercamfield/status/494805475733807104


を実行した後、フォルダー内の残りの一時オブジェクトを識別するのgit gcgit count-objects -v役立ちpackます。
mistaecko

4

私は管理者としてPowershellを開いてそこ から解決することができましたgit checkout <branch_name>


@ bar-horingに感謝します。これは、それを許可の問題として特定するのに役立ちました。そのフォルダーのWindowsアクセス許可を修正すると、機能しました。
Kumar

3

「git pull」を実行しているときに同じ問題に直面しました。手動のハウスキーピングgitコマンド「git gc」を試してみたところ、問題は解決しました。


4
これ回答の試みですが、他の回答(この回答など)でまだカバーされていないものは追加されません。このソリューションが機能することを確認しようとしている場合、またはその回答の作成者に感謝したい場合は、回答を投稿しないでください。評判がさらに高まると、スタックオーバーフローに感謝の意を表す、好きな回答に賛成投票するための十分な特権が得られます。
Scott Weldon 2016年


2

いろんな解決策を試した後、ようやくgit clean -f助けてくれました。

編集:私は何度か問題にぶつかりました-gitに依存するすべてのプロセスを閉じると役立つようです(gitbash、Eclipse IDEなど)


2

上記のように、何か他のものがファイルを保持しています。ことは、そのプログラムが私たちにとって疑わしく見えないということです。GitKrakenを開いたまま、コンソールからgit pullを実行しようとしました。GitKrakenを閉じると問題が修正されました。


2

コマンド実行後

git rm -rf foo.bar

エラーが表示されます

Unlink of file 'foo.bar' failed. Should I try again? (y/n)

別のプログラムがこのファイルを使用しているためです。たとえば、デバッグモデルでJava Webアプリケーションを実行したり、サーバーでWebアプリケーションを実行したりすると、ログファイルを削除できません。アプリケーションサーバーをオフにする(またはデバッグプロセスをオフにする)、再試行

git rm -rf foo.bar

ファイルが削除されたようです。


1

これは、いくつかのgit履歴を表示するために実行されている別のgitkウィンドウである場合があります。

そのウィンドウを閉じて問題を修正してください。


1

git BashとEclipse EGitを同時に実行しているこの問題に遭遇しました。解決策:Eclipseを閉じます。git gc@khiloが述べたように実行しても害はありません。



1

私はWindowsでこの問題に遭遇しました。あなたはgit bashを管理者として実行し、欲望コマンドを実行することで問題を解決できます。


1

Webアプリケーションを開発している場合、一般的な理由は、サーバーのシャットダウンを忘れることです。たとえば、これは単純なNode.jsプロセス、またはWindowsではIISプロセスがバックグラウンドプロセスとして目立たないように実行されている可能性があります。


1

このページのすべてのヒントを試しましたが、何も役に立ちませんでした。私はやっていました、git fetchそしてgit reset --hard origin/development私にunkinkエラーを与えました。最新のコミットにリセットできませんでした。

役に立ったのは、別のブランチをチェックアウトしてから、前のブランチをチェックアウトすることでした。非常に奇妙ですが、問題は解決しました。


1

IDEを閉じて、ここにリストされているさまざまなgitコマンドを実行しても問題が解決しない場合は、実行中のすべてのJavaプロセスを手動で強制終了してみてください。私はおそらく日食から残ったJavaプロセスが構成ファイルを開いたままにしていました。


1

Dockerを使用してWindows 10を実行している場合は、ファイルが実行されている可能性のあるコンテナーを停止することができます。コンテナのステータスを表示するには、次を実行します

docker ps -a

それらを停止するには、単に実行します

docker stop <container name or container id>

.shファイルを使用してローカルファイルを実行しているので、これは私にとってうまくいきました


1

私のために働いて、Windowsで試しました:

IDEから実行中のサーバー停止するか、IDEを閉じます

Intellij / Ecllipseまたはそれ以外でも機能します。


0

Windowsでは、git clone(かなり大きな)リポジトリでこのエラーが発生しました。SmartGitを閉じ、バックアップソフトウェア(CrashPlan)を一時停止しましたが、その後は機能しました。2つのうちどちらがトリックを実行したかはわかりませんが、どちらかを実行している場合、これもあなたのためにそれをするかもしれません。


0

私がgit pullを実行しているときにも同じ問題が発生しました。前述のように、これらのファイルを保持しているプログラムがgit pullを許可していなかったことが原因でした。プログラムを閉じると助けになった。通常、ファイルがチェックインされるIDE(Eclipseなど)は、それをバックグラウンドで保持します。同じことを閉じてgit pullを再実行すると、問題が解決しました。


0

これと同じエラーが発生し、ファイルを開いているアプリを閉じると解決しました。戻って「Y」を押すことができました

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