somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【git】ファイルのリネーム時に大文字小文字を区別しない【Windows】

タイトルどおり、大文字小文字を区別しなかったので、そのときの解決法をメモしておきます。Windows(msysgitのGitBash)で発生したので、Linux環境で発生するかはわかりません。

問題発生までの流れ

phpにて、クラスを定義したファイルの名前の先頭を小文字にしてしまったためです。だいたいの言語では、クラス名の先頭は大文字で統一されています。

問題

以下、問題が起きたときの状況です。

$ git mv -n core/application.php core/Application.php
Checking rename of 'core/application.php' to 'core/Application.php'
fatal: destination exists, source=core/application.php, destination=core/Application.php

applicationをApplicationに変更しています。しかし、タイトルどおり区別していないため、リネーム後のファイル名が既に存在していることになっています。

nオプションは、実際には実行せずに結果だけを確認するためにつけています。

解決法

git mvを2回実行します。

$ git mv core/application.php core/pplication.php
$ git mv core/pplication.php core/Application.php

当たり前ですが、mvを2回実行しても、indexに反映されません。git statusでリネームできたことを確認できました。