半年以上前に作成した記事が眠っていたので、ちゃんと編集して載せたいと思います。
同じエラーで悩んでいる方の参考になれば幸いです。
はじめに
gitでプロジェクトを管理していたら
fatal: Unable to create '○○': File exists.
というエラーが出てしまったので、後で見返せるように投稿します。
所々間違っている点があるかもしれませんが、ご了承ください。
エラーの内容
fatal: Unable to create '○○': File exists.
このエラーの内容ですが、簡単に言うと同じリポジトリ内でプロジェクトの強制終了や、フリーズ、gitのコマンドが複数同時に実行されてしまっているときに起きるエラーだそうです。
index.lockファイルとは
同時に複数のユーザーが同じGitリポジトリにアクセスする場合、同じファイルでの変更(競合状態)が起こらないようにGitがindex.lockファイルを生成し、競合が起きないようにロックをかけてくれています。
今回は、プロジェクトのフリーズ、強制終了等によってindex.lockファイルにロックがかかってしまったのではないかと思います。
エラーの解決法
index.lockファイルの削除
まずは、ロックがかかってしまっているindex.lockファイルを消す必要があります。
とはいってもエクスプローラーから普通に'index.lock'ファイルを消そうとしても表示されません。
そのため、コマンドプロンプトからindex.lockファイルを削除します。
ターミナル→コマンドプロンプトで対象のディレクトリに移動
エラーが出てしまっている'フォルダ名/.git'ディレクトリまでcdコマンドで移動します。
dirコマンドでファイルの一覧を表示
dirコマンドで.gitフォルダ内の一覧を表示します
dir
ファイルの一覧↓
ドライブ C のボリューム ラベルは Windows です
ボリューム シリアル番号は 82FD-F600 です
2023/10/19 18:01 19 COMMIT_EDITMSG
2023/10/19 15:31 251 config
2023/10/19 15:31 73 description
2023/10/19 15:31 23 HEAD
2023/10/19 15:31 <DIR> hooks
2023/10/19 18:01 64,708 index
2023/10/20 16:26 0 index.lock //★コレ
2023/10/19 15:31 <DIR> info
2023/10/19 15:32 <DIR> logs
2023/10/20 16:27 <DIR> objects
2023/10/19 15:32 <DIR> refs
6 個のファイル 65,074 バイト
5 個のディレクトリ 46,534,533,120 バイトの空き領域
このようにフォルダ内のファイルが出力されるので、index.lockファイルがあることを確認します。
delコマンドを使用し、index.lockファイルを削除する
index.lockファイルがあることを確認したらdelコマンドを使用してindex.lockファイルを消去します。
再びコミットを実行
この状態で再びコミットを行うとエラーが消え、commitやpushが行えるようになります。
参考記事
・index.lockファイルの概要
https://learn.microsoft.com/ja-jp/azure/devops/repos/git/git-index-lock?view=azure-devops
・【Git】index.lockのせいでコミット・プッシュ等が出来なくなった時の対処方法
https://harusara22.work/git-index-lock/#container
おまけ
初めてqiitaに投稿しましたが、こういったエラー内容をすぐに忘れてまた調べての繰り返しだったので、今回は復習、アウトプットをする良い機会になりました。
また、色んなタイミングで復習がてら投稿したいと思います。
最後までお読みいただき、ありがとうございました。