お疲れ様です。
はるさらと申します。
今回はGitについての
記事となります。
index.lockファイルが影響して
clone,pushができなくなり
悩んだことがありましたので
対処方法を記載しておきます。
結論としては
index.lockファイルを削除すれば
それで解決するのですが
注意点とちょっとした
コツが必要でしたので
index.lockファイルの消し方を
備忘録として残しておきます。
事象
仕事中にGitを使って
プロジェクトをクローン(チェックアウト)
する際に
git checkout staging
fatal: Unable to create ‘パス/.git/index.lock’:File exists.
のようなエラーが出てしまい
クローン出来ないことがありました。
index.lock’ ファイルが存在します
といったエラーが表示されている方も
同事象となりますので
続きを読んでいただけると幸いです。
原因
エラー文にもある通り
記載されているパスの中に
「index.lock」ファイルが
既に存在しているため
処理が失敗してしまっていました。
index.lockとは何か
Pushなどを妨げてしまっている
index.lockファイルですが、
実は大切な役割をしています。
インデックスを編集する Git コマンドを実行すると、
Git によって新しい index.lock ファイルが作成され、
変更が書き込されてから、
ファイルの名前が変更されます。
index.lock ファイルは、
リポジトリが編集のためにロックされていることを
他の Git プロセスに示します。
※下記サイトより引用
https://docs.microsoft.com/ja-jp/azure/devops/repos/git/git-index-lock?view=azure-devops
つまり、Gitを使用して
作業を行っている際に
同時に同環境に更新が行われないように
index.lockファイルが作成され
ロックをかけてくれています。
そのため、もしGitを使って
多重作業をされているのであれば、
先に動かしたタスクが
完了するまで待ちましょう。
作業が終われば自動的に削除されます。
ただし、前タスクがフリーズや、
タスクキルによって
強制終了されてしまうと
index.lockファイルが残ったままに
なってしまうことがあります。
そうなった場合にこれから記載する方法で
index.lockファイルを削除してあげてください。
対処法
記事の冒頭で
index.lockファイルを削除すれば
解決と記載したのですが
エラーの出たパスをエクスプローラ上で
見に行ってもindex.lockファイルは
見えないようになっています。
そのため存在しない? 消せない??と
思ってしまうのですが、
コマンドプロンプトから
確認、削除が可能になります。
手順① cmdで対象のパスまで遷移
cmd(コマンドプロンプト)を開き
cdコマンドで対象のフォルダへ移動。
今回は「C:\Users\reclo\Desktop\work\.git」フォルダ内に
index.lockファイルが作成された
想定で実施していきます。
手順② index.lockファイルの存在を確認
dirコマンドを使って
移動したフォルダ内に
「index.lock」が存在することを
確認します。
エクスプローラー(フォルダ)上では
隠しファイルとなっており
見つけられなかったとしても
cmdにて表示されていれば
index.lockファイルは存在しています。
手順③ index.lockファイルの削除
index.lockファイルの存在を確認したら
delコマンドを使用して
「index.lock」を
削除しましょう。
これでindex.lockファイルが
削除されましたので
再度、プッシュしかり
クローンしかり
試してみて下さい。
index.lockファイルのまとめ
仕事中に何らかの操作をした際に
「あ、まちがえた」と思い、
×で消してしまったことがあるんですよ。
pull,push以外の動作だったと思うのですが
それでも、index.lockファイルが作成され
少し苦戦してしまいました。
なんにせよ
強制終了はダメですね。。
以後、気を付けようと思います・・・。
それではまたー!