読者です 読者をやめる 読者になる 読者になる

あんパン

こしあん以外は認めない

case-insensitiveなファイルシステムにおいてGitで間違えてコミットしたcaseを修正する

TL;DR

git mv を使いましょう

何を言っているのか

OSXファイルシステムはデフォルトでcase-insensitiveとなっている.OSを入れなおすことでcase-sensitiveにできたり,case-sensitiveなfsのパーティションを切ることもできる.なお,Linuxではたいていのファイルシステムcase-sensitiveになっている.この差がよくない.

例えばmainWindow.jsというファイル名なのにimport MainWindow from './MainWindow'というコードを書くとMacでは正しくうごくが,Linuxでは動かないみたいなことが起きる(はず).これを修正するためにファイル名をMainWindow.jsに変更すると,MacではGitがファイル名の変更を正しく認識しないのでdiffが見えない.なので,修正するためにgit mvしようという話でした.git mvしておけば,別の人がすでにcloneしててもgit pullすればちゃんとファイル名を変えてくれる.

Macのfsをむやみにcase-sensitiveに変えるべきではないと思う.Mac用のツールが(無意識的に)case-insensitiveであることを前提に書かれている場合,不具合の原因となりうる.

実践

github.com

このrepoみたらだいたい言いたいことがわかると思う.