HRR Co., Ltd.

技術的な記録を残していくことを目的としています。1次情報を大事にしています。

git mvで「fatal: not under version control」が出たときの対応

はじめに

Windowsの話です。
Git管理されているファイル名の大文字小文字をgit mvコマンドで変更しようとしたときに、
fatal: not under version control
というエラーが出るときがありますが、その解消方法の説明になります。

原因

Windowsはファイルの大文字小文字を違いとして認識しないので、Gitにファイル名が変わったことを明示的に教えてあげる必要があります。
上記エラーが出る場合、恐らくWindowsの機能などを使って既にファイル名を変更済みなのではないでしょうか。

解決方法

ひとまずファイル名を元に戻してもらって(VSCodeエクスプローラー、mvなどで)、その後、git mvコマンドを叩きます。

具体例

修正前: aaa.txt
修正後: AAA.txt

# いったん元に戻す
mv AAA.txt aaa.txt

# Gitのコマンドでファイル名を修正する
git mv aaa.txt AAA.txt

これでgit statusしたときの変更としても表示されると思いますので、
これ以後は通常通りgit add, git commit, ...と続けていただければと思います。

おわりに

使用しているフレームワークによって、大文字 or 小文字を指定されるケースがあります。
Windowsの場合(Windowsファイルシステムを参照している場合)はそこを間違えても動いてたりするので、今回のようなケースに出会いやすいかなと思いました。

以上でした!

(追記)

大文字小文字を修正したことが原因で、対象のファイルがGitに変更と検知されてgit statusに出てきてしまい、新たにgit pullしてもAbortされてしまう場合には…

hrroct.hatenablog.com

こちらを参考に、強制的にローカルの内容を最新の状態で更新してしまうとよいと思います。