💨

Git の "fatal: cannot lock ref" エラーの原因と解決

2025/02/14に公開

エラーの発生状況

Git でタグを作成しようとした際に、以下のようなエラーが発生しました。

fatal: cannot lock ref 'refs/tags/example-v0.1.0': Unable to create '/path/to/.git/refs/tags/example-v0.1.0.lock': File exists.

Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.

このエラーは、タグを作成しようとした際に .git/refs/tags/ 配下に .lock ファイルが存在するため発生しました。 .lock ファイルは Git の排他制御のために作成されますが、何らかの理由で削除されずに残ってしまうと、新しいタグの作成がブロックされてしまいます。

解決方法

1. .lock ファイルを削除する

まず、該当する .lock ファイルを削除します。

rm -f /path/to/.git/refs/tags/example-v0.1.0.lock

このコマンドを実行すると、.lock ファイルが削除され、Git のロックが解除されます。

2. Git リポジトリの状態を確認する

次に、リポジトリの状態を確認して、正しく処理が進められるか確認します。

git status

エラーが発生していないことを確認できたら、タグの作成を再試行します。

3. タグの作成を再試行する

git tag example-v0.1.0

このコマンドが正常に完了すれば、エラーは解消され、タグが作成されます。

まとめ

Git でタグを作成する際に fatal: cannot lock ref エラーが発生した場合、.lock ファイルの削除を行うことで解決できます。エラーが発生する原因としては、

  • 過去の Git プロセスが正常に終了せず、.lock ファイルが残ってしまった
  • git commit などの操作が未完了の状態で、新しいタグ作成を試みた

といったことが考えられます。

今後、同様のエラーが発生した際には、.lock ファイルの削除を試すことでスムーズに解決できるでしょう。

ちなみに

lockファイルが作成されてしまったのは、Gitのバージョンが上がったことで、セキュリティソフトが新しいプログラムとして認識して、ディレクトリへの操作を制御していた(通知あり)

Discussion