備忘録
結論
- 一旦削除したいファイルを削除しようとしてエラーになるので [再試行] を何度か押す
- 一度シャットダウン → もう一度起動する
- この時点でファイルが既に削除されているか、操作権限が通常のファイル同様になっているので削除できる状態になる
- 壊れたファイルを削除して完了
経緯
Git で作業をしていたら、いつのまにか
error: update_ref failed for ref 'refs/remotes/origin/master': cannot lock ref 'refs/remotes/origin/master': unable to resolve reference 'refs/remotes/origin/master': Permission denied
という見たことのないエラーが…
原因は (リポジトリフォルダ)/refs/remotes/origin/master
ファイル(おそらく Git の管理ファイル)が壊れてしまい、上書きも移動も削除もできない状態になってしまったことにあるようです
git commit・git push 自体は通常通り行え GitHub にも正しく反映されますが、壊れたファイルに書き込みできないことでエラーになっていたらしい
git remote rm で直るかと思いきや直らないのでかなり詰まってしまった…
別 PC 内のストレージにあるローカルリポジトリをネットワーク経由でいじっている特殊なケースなので壊れるのも無理はないとはいえ…
(リポジトリフォルダ)/refs/remotes/origin/master
を削除しようとすると「このファイルを変更するには管理者のアクセス許可を提供する必要があります」「このファイルを変更するには コンピューターの管理者 からアクセス許可を得る必要があります」と表示され、いくら再試行を押しても削除できません
プロパティから権限周りの設定を変えようとしましたが全部変更できない(適用ボタンを押すと謎のエラーが出る)し、裏技の 7-Zip File Manager(エクスプローラーじゃできない操作がなぜかできたりする)も使えず…
今回は管理者にすらファイルの操作ができない権限になっていました(Linux で言う 000 ?)が、なぜかこの手の問題は大体再起動で直るみたいです(過去にも何度か再起動で直ったことがあった)
ファイルをロックしたままプロセスが消えた場合とかに起きそうだけどどういう条件で起こるのかは不明…
Windows7 は割とファイルが壊れやすいような気がするな…(いい加減 Windows10 に移行しろ)
コメント