ローカルの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 構成でロングパス サポート フラグを有効にしてみてください。
git config --global core.longpaths true
または、競合しない場合は、はい/いいえの回答フラグを設定してみてください
set GIT_ASK_YESNO=false
パスが長すぎる場合は、成功する解決策が見つかりません。
私は試しgit gc
てみましたが、それは私の問題を解決しました。
Windows 8 の場合:実行すると、既に実行されてgit gc
いると表示されました。実行すると、ガベージ コレクターが実行されました。git gc
git gc --force
その後、問題なくブランチとマージを切り替えることができました。試してみてくださいgit gc --force
。
何らかのgc
理由でプロセスが正常に停止しなかった可能性があります。
git.exe
Windows 7でこの種の問題が発生しましたが、孤立したプロセスが原因であることが判明しました。
これを解決するには、タスク マネージャーを開き、すべてのgit.exe
プロセスを強制終了します。
コマンドは寿命が短いため、通常、タスク マネージャーにgit
表示されることはありません。git.exe
それらがそこにある場合、それは通常、何かが間違っていることを意味し、それらのプロセスを強制終了する必要があります。
Windowsでこの問題が発生しました。IDE (Android Studio) を閉じて、git shell で YES を選択しました。出来た。
私の場合 (Win8.1、TortoiseGit 実行)、ファイルをロックしていたのは「TortoiseSVN ステータス キャッシュ」と呼ばれるプロセスでした。
それを殺すと、問題なく「git gc」を実行できました。上記のプロセスは TortoiseGit によって起動されるため、手動で再起動する必要はありません。
「git pull」の実行中に同じ問題に直面しました。手動のハウスキーピング git コマンド 'git gc' を試したところ、問題が解決しました。
IDE を閉じて、ここにリストされているさまざまな git コマンドを実行しても問題が解決しない場合は、実行中のすべての Java プロセスを手動で強制終了してみてください。おそらくEclipseから残ったJavaプロセスがあり、何らかの形で構成ファイルを開いたままにしていました。
このページのすべてのヒントを試しましたが、何も役に立ちませんでした。を実行していたgit fetch
ところgit reset --hard origin/development
、unink エラーが発生しました。最新のコミットにリセットできませんでした。
役に立ったのは、別のブランチをチェックアウトしてから、前のブランチをチェックアウトすることでした。非常に奇妙ですが、問題は解決しました。
私は Windows でこの問題に遭遇しました。管理者として git bash を実行してから、desire コマンドを実行して問題を解決してください。
Web アプリケーションを開発している場合、一般的な理由はサーバーのシャットダウンを忘れることです。たとえば、これは単純な Node.js プロセスである可能性があり、Windows ではバックグラウンド プロセスとして控えめに実行されている IIS プロセスである可能性があります。
Windows では、git clone
(かなり大きな) リポジトリでこのエラーが発生しました。SmartGitを閉じてバックアップ ソフトウェア (CrashPlan) を一時停止すると、その後は機能しました。2つのうちどちらがうまくいったかはわかりませんが、どちらかを実行している場合、これもうまくいくかもしれません.
Git 2.29 (2020 年第 4 四半期) では、このエラーの頻度が低くなる可能性があります。MinGW の「リンク解除」エミュレーションが最適化されています。
Jeff Hostetler ( )によるcommit 680e0b4 (2020 年 8 月 17 日)を参照してください。( 2020 年 8 月 19 日、コミット 5a04826でJunio C Hamanoによってマージされました)Jeff-Hostetler
gitster
mingw
: のパフォーマンスを向上させるmingw_unlink()
署名者: Jeff Hostetler
署名者: Johannes Schindelin
mingw_unlink()
強制的に実行する前に、まず既存のアクセス許可を持つファイルを削除しようとするように更新します。読み取り専用ファイルを削除しようとすると、Windows がエラーをスローします。互換性ラッパーは、そのエラーを回避するために、呼び出す前に常にファイルを試行
します。 ただし、ワークツリー内のほとんどのファイルはすでに書き込み可能であるため、通常、これは無駄な作業です。mingw_unlink()
_wchmod(
_wunlink()
mingw_unlink()
直接呼び出すだけに更新しDeleteFileW()
、それが成功した場合は戻ります。
それが失敗した場合は、既存のコード パスにフォールバックしてアクセス許可を更新し_wunlink()
、既存のエラー コード マッピングを取得するために使用します。
私の状況では、その日の早い時間に管理者として Visual Studio を実行したことが原因でした。ブランチを切り替えようとすると、エラーが発生しました。
私はGitExtensionsを使用し、通常のユーザーとして実行し、管理者として実行中にVSによって作成されたファイル(管理者として実行、それでも私は)にアクセスできませんでした。これが私にとっての根本的な原因でした。プライマリ開発環境で VS を管理者として定期的に実行しており、以前にこの問題を経験したことがないため、なぜこの状況で発生したのかわかりません。しかし、何らかの理由で、今日、上記のシナリオにより、そのセッション中に VS によって生成されたファイルは編集できなくなりました...それらを読み取ることはできますが、変更または削除することはできません。これは、ブランチを切り替えるときに Git が行うこととまったく同じです。 .
Git の問題を解決するには、Windows エクスプローラーを管理者として起動し、所有権を取得して、問題のファイルとディレクトリへのアクセス許可を自分自身に再度付与する必要がありました。管理者としてエクスプローラーも実行していたので、これがなぜなのか完全にはわかりませんが、そうでした。
ファイルに対して個別にこれを行うことができますが、ブランチのルートフォルダーに対してこのプロセスを実行することになりました。
したがって、問題を修正するために私が行った正確な手順は次のとおりです。Windowsエクスプローラーでブランチの一番上に移動し、ディレクトリのプロパティを右クリックし、セキュリティタブを選択し、[高度なセキュリティ設定]ダイアログを開く高度なオプションを選択し、所有権の変更を選択しました一番上 (すでに所有していると表示される場合があります)、私は自分自身を再選択しました。次に、「高度なセキュリティ設定」ダイアログに戻ります。下部にある「すべてのオブジェクトを置換...」ボックスをチェックすることを忘れないでください。次に、適用をクリックします。システムは各ファイルとフォルダーを循環して所有権を修正し、問題を解決しました。 .
私にとっては、移行フォルダーがロックアウトされ、ブランチを切り替えることができませんでした...そのため、もともとそのディレクトリとサブツリーを修正して、ブランチを切り替えることができましたが、問題を解決しようとしてVSを閉じました。VS を再度開いたとき、管理者として VS を実行しなかったため、ソリューションを今すぐコンパイルできないことがわかりました。同じ\類似の問題でした。すべてのobjディレクトリが編集不可能になったため、ソリューションをコンパイルできませんでした...そのため、上記の手順を実行すると、すべてが再び良好になりました。
これが誰かに役立つことを願っています...;)