私のローカルのgitリポジトリにあるファイルの1つに問題があります。ブランチを変更しようとしているとき、それは言います:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
どういう意味ですか?
これは、他のプログラムがそのファイルを使用していることを意味している可能性があります。これは、ブランチを変更しようとしているときに、gitがファイルを作業ディレクトリに移動することを妨げます。
私はEclipseがファイルを「使用している」プログラムであるWindows Vistaでこれを起こしました。このファイルは実際にはEclipseで開かれていない可能性がありますが、Eclipseによって実行されるプロセスによって開かれている可能性があります。
この場合は、使用している可能性があるアプリケーションでファイルを閉じてみてください。それでもうまくいかない場合は、ファイルを開いている可能性のあるアプリケーションをすべて終了してください。
私はこの問題を抱えていて、次のコマンドでそれを解決しました:git gc
上記のコマンドは一時ファイルと不要なファイルを削除します。 (ガベージコレクタ)
こちら からのこの解決策は私のために働いた:
これはWindows特有の答えなので、あなたには関係ないことを私は知っています...私は将来の検索者の利益のためにそれを含めています。
私の場合は、昇格していないコマンドラインからGitを実行していたためです。 「管理者として実行」で修正されました。
私はgit pull
をしている間にこの問題に遭遇しました。
私はgit gc
を試しました、そしてそれは私の問題を解決しました。
私の場合、ファイルやディレクトリに触れるプロセスはありません。パスが非常に長い場合は、おそらくオペレーティングシステムの制限(Windows)が原因で発生します。以下に示すように、グローバルgit設定でlongpathサポートフラグを有効にしてみてください。
git config --global core.longpaths true
競合しない場合は、yes/no answerフラグを設定してみてください。
set GIT_ASK_YESNO=false
パスが長すぎる場合、私は成功した解決策を見つけることができませんでした。
私の場合(Win8.1、TortoiseGitが実行中)、ファイルをロックしていたのは「TortoiseSVNステータスキャッシュ」というプロセスでした。
それを殺しても問題なく "git gc"を実行することができました。上記のプロセスはTortoiseGitによって起動されるので、手動で再起動する必要はありません。
私は gitkraken とコマンドプロンプトを使っているので、同じ問題に遭遇しました。それから私はそれが私の問題を解決したgit gc
コマンドを実行します。だから私は幸せだし、役に立つかもしれないポイントのいくつかを共有したいと思います。
git gc
は何をしますか?
git gc
以前のgit addの呼び出しから作成された可能性のある到達不能なオブジェクトを削除する。
いつgit gc
を実行するのですか?
doc から、ユーザーはこのタスクを各リポジトリー内で定期的に実行して、良好なディスクスペース使用率と良好なパフォーマンスを維持することをお勧めします。
自動設定可能にするにはどうすればいいですか?
いくつかのgitコマンドは自動的にgit gcを実行します。詳細は下記の--autoフラグを参照してください。自分のしていることがわかっていて、それ以上の考慮なしにこの動作を永久に無効にすることだけを望んでいる場合は、
git config --global gc.auto 0
私はgit gc
を試しました、そしてそれは私の問題を解決しました。
これは誰かに役立つかもしれません。上記のすべてがうまくいかなかった場合は、次の手順に従ってください。
あなたのIDE(私のはEclipseだった、それがIntellijや他の人に当てはまるかどうかわからない)あるいはgitを使っているかもしれない他のどんなアプリでも閉じなさい。
コマンドラインからgitを開き(私の場合はgit bashを持っていました)、他の人が言ったようにgit gc
を実行します。
これは私にとって魔法でした。
Windows 8の場合:git gcを実行しましたが、git gcは既に実行されています。gitgc --forceを実行し、ガベージコレクタを実行しました。
それからブランチを切り替えて問題なくマージできたので、git gc --forceを試してみてください。
何らかの理由で、gcプロセスが適切に停止しなかった可能性があります。
私は.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
私はWindowsでこの問題を抱えています。 IDE(Android Studio)を閉じ、git ShellでYESを選択しました。出来た。
'git pull'をしている間、私は同じ問題に直面しました。手動のハウスキーピングgitコマンド 'git gc'を試してみたところ、問題が解決しました。
私はWindows 7でこの種の問題を抱えていましたが、それは孤立したgit.exe
プロセスが原因であることが判明しました。
それを解決するには、タスクマネージャを開いてすべてのgit.exe
プロセスを終了させます。
git
コマンドは寿命が短いので、通常、タスクマネージャにgit.exe
が表示されることは決してありません。それらがそこにあるとき、それは通常何かが間違っていることを意味します、そしてあなたはそれらのプロセスを殺すべきです。
私はこれを解決することができました管理者としてPowerShellを開くそしてそこからgit checkout <branch_name>
さまざまな解決策を試した後、ついにgit clean -f
が私を助けました。
編集:私は再び数回問題にぶつかりました - gitに依存しているすべてのプロセスを閉じることは助けになるようです(gitbash、Eclipse IDEなど)
実行後コマンド
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
ファイルが削除されたようです。
私はgit BashとEclipse EGitを同時に実行してこの問題に遭遇しました。解決策:Eclipseを閉じます。 @khiloが述べたようにgit gc
を実行しても大丈夫です。
私はWindowsでこの問題に遭遇しました、あなたは管理者としてgit bashを実行してから欲しいコマンドを実行したいと思うかもしれません、それは私のために問題を解決しました。
上記のように、他の何かがファイルを保持しています。つまり、このプログラムは私たちにとって不審には見えません。 GitKrakenを開いている間に、コンソールからgit pullを実行しようとしていました。 GitKrakenを閉じると問題は解決しました。
私はこのページですべてのヒントを試してみましたが、何も助けになりませんでした。私はgit fetch
をやっていました、そしてgit reset --hard Origin/development
は私にunkinkエラーを与えました。最新のコミットにリセットできませんでした。
他のブランチをチェックアウトしてから、前のブランチをチェックアウトするのに役立ちました。非常に奇妙だがそれは問題を解決した。
これはいくつかのgit履歴を見るために走っている別のgitkウィンドウかもしれません。
そのウィンドウを閉じて問題を解決してください。
Webアプリケーションを開発している場合、一般的な理由はサーバーのシャットダウンを忘れることです。たとえば、これは単純なNode.jsプロセス、またはWindowsではIISプロセスがバックグラウンドプロセスとして目立たないように実行されている可能性があります。
上記の答えがどれもうまくいかないようでしたが、git fetch -p
を実行することで私の仕事ができました。
IDEを閉じて、ここにリストされているさまざまなgitコマンドを実行しても問題が解決しない場合は、実行中のすべてのJavaプロセスを手動で強制終了してください。私はおそらくEclipseから取り残されたJavaプロセスを持っていて、どういうわけか設定ファイルを開いたままにしていました。
私の場合、その特定のファイルのコピーまたは置換ウィンドウが開いていたため、リンク解除エラーが発生しました。私はそれを閉じて、リンク解除エラーはありません
Windowsでは、(かなり大きな)リポジトリのgit clone
でこのエラーが発生しました。 SmartGit を閉じて、私のバックアップソフトウェア(CrashPlan)を一時停止し、その後うまくいった。 2つのうちどれがトリックをしたのかわからないが、どちらかを実行しているなら、これもあなたのためにそれをするかもしれません。
行う
私のために働いた
私はこれと同じエラーがあり、ファイルを開いていたアプリを閉じるとそれが解決しました。私は戻って「Y」を押すことができました
Dockerを使用していてWindows 10を実行している場合は、ファイルが実行されている可能性があるコンテナを停止することができます。コンテナのステータスを表示するには、次のコマンドを実行してください。
docker ps -a
それらを止めるには、単に実行してください
docker stop <container name or container id>
.shファイルを使用してローカルファイルを実行しているので、これは私にとって役に立ちました。
私はGit Pullをしている間同じ問題を抱えていました、そして上記のように、それはそれらのファイルを保持していてGit Pullを許可していなかったプログラムが原因でした。プログラムを閉じることは助けた。通常、ファイルがチェックインされる場所のIDE(Eclipseのように)はそれをバックグラウンドで保持します。同じgit pullを再実行して問題を解決しました。