web-dev-qa-db-ja.com

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

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

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

どういう意味ですか?

454
Pol

これは、他のプログラムがそのファイルを使用していることを意味している可能性があります。これは、ブランチを変更しようとしているときに、gitがファイルを作業ディレクトリに移動することを妨げます。

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

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

595
Melissa

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

239
khilo

こちら からのこの解決策は私のために働いた:

これはWindows特有の答えなので、あなたには関係ないことを私は知っています...私は将来の検索者の利益のためにそれを含めています。

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

69
sepehr

私はgit pullをしている間にこの問題に遭遇しました。

私はgit gcを試しました、そしてそれは私の問題を解決しました。

32
Rahul Chandran

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

git config --global core.longpaths true

競合しない場合は、yes/no answerフラグを設定してみてください。

set GIT_ASK_YESNO=false

パスが長すぎる場合、私は成功した解決策を見つけることができませんでした。

14
andhdo

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

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

8
nickD

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

git gcは何をしますか?

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

いつgit gcを実行するのですか?

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

自動設定可能にするにはどうすればいいですか?

いくつかのgitコマンドは自動的にgit gcを実行します。詳細は下記の--autoフラグを参照してください。自分のしていることがわかっていて、それ以上の考慮なしにこの動作を永久に無効にすることだけを望んでいる場合は、

git config --global gc.auto 0
7

私はgit gcを試しました、そしてそれは私の問題を解決しました。

7
Mukesh Yadav

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

  1. あなたのIDE(私のはEclipseだった、それがIntellijや他の人に当てはまるかどうかわからない)あるいはgitを使っているかもしれない他のどんなアプリでも閉じなさい。

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

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

7
papigee

Windows 8の場合:git gcを実行しましたが、git gcは既に実行されています。gitgc --forceを実行し、ガベージコレクタを実行しました。

それからブランチを切り替えて問題なくマージできたので、git gc --forceを試してみてください。

何らかの理由で、gcプロセスが適切に停止しなかった可能性があります。

5
Mark Howard

私は.tmpフォルダーの/.git/objects/packファイルでこの問題を抱えていました。プッシュまたはプル中に何かが失敗したと思うので、これらの一時ファイルを削除してHEADを最後のコミットにリセットしました。これが推奨されるかどうかわからないが、それは私のために働いた。またgit count-objects -vはpackフォルダに属していない.tmpファイルのリストを私に与えてくれました。

または、ウィンドウのy/nメッセージを非表示にしてgit open cmd.exeを実行して、次のコマンドを実行します。

SETX GIT_ASK_YESNO false

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

4
blueberries

私はWindowsでこの問題を抱えています。 IDE(Android Studio)を閉じ、git ShellでYESを選択しました。出来た。

4
vovahost

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

4
doitright

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

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

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

4
jakub.g

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

3
Bar Horing

さまざまな解決策を試した後、ついにgit clean -fが私を助けました。

編集:私は再び数回問題にぶつかりました - gitに依存しているすべてのプロセスを閉じることは助けになるようです(gitbash、Eclipse IDEなど)

2
FazoM

実行後コマンド

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
Do Nhu Vy

私はgit BashとEclipse EGitを同時に実行してこの問題に遭遇しました。解決策:Eclipseを閉じます。 @khiloが述べたようにgit gcを実行しても大丈夫です。

1
jhyry

私はWindowsでこの問題に遭遇しました、あなたは管理者としてgit bashを実行してから欲しいコマンドを実行したいと思うかもしれません、それは私のために問題を解決しました。

1
Pablo Fallas

上記のように、他の何かがファイルを保持しています。つまり、このプログラムは私たちにとって不審には見えません。 GitKrakenを開いている間に、コンソールからgit pullを実行しようとしていました。 GitKrakenを閉じると問題は解決しました。

1
100r

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

他のブランチをチェックアウトしてから、前のブランチをチェックアウトするのに役立ちました。非常に奇妙だがそれは問題を解決した。

1
T3rm1

これはいくつかのgit履歴を見るために走っている別のgitkウィンドウかもしれません。

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

1
weinerk

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

1
alex3683

上記の答えがどれもうまくいかないようでしたが、git fetch -pを実行することで私の仕事ができました。

https://git-scm.com/docs/git-fetch

1
Jamie Wade

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

0
Marc.S

私の場合、その特定のファイルのコピーまたは置換ウィンドウが開いていたため、リンク解除エラーが発生しました。私はそれを閉じて、リンク解除エラーはありません

0
schin chan

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

行う

git clean -dxf

私のために働いた

0
Aalok

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

0
Paul McDaniel

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

docker ps -a

それらを止めるには、単に実行してください

docker stop <container name or container id>

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

0
Razor's Edge

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

0
Somesh Rao