Git Filename Capitalization

Addressing a minor concern related to filename capitalization in Git on macOS.

Niraj Niroula
2 min readMar 28, 2024
Photo by hannah joshua on Unsplash

A few days before, while working on a project, I encountered a peculiar issue with Git file renaming. You see, I needed to change the filename from proposalList.jsx to ProposalList.jsx. Simple task, right? Well, not quite.

The Initial Struggle

First, I attempted to rename the file using my file explorer i.e VSCode’s Explorer. However, even though I made the change and pushed it to the remote repository, something strange happened when I pulled the changes to my local repository. The capitalization didn’t stick!

Little did I know, the Mac OS file system is case-preserving and case-insensitive by default, which added a layer of complexity to the situation.

Exploring Solutions

Determined to find a solution, I went on a journey to fix this renaming hiccup. I stumbled upon two main approaches — from this answer from stackoverflow:

  1. Using Git Move Command: I decided to give the git mv command a shot. It felt like a logical solution, so I typed
git mv proposalList.jsx ProposalList.jsx 

into my terminal. Voila! This command explicitly tells Git to rename the file, ensuring that the capitalization change is properly tracked. Remember, writing the full path of the file e.g. src/screens/proposalList.jsx i.e. as your need.

2. Modifying Git Configuration: Another option I considered was tweaking Git’s configuration settings. By running

git config — global core.ignorecase false

I could make Git pay attention to filename case differences.

Conclusion

In the end, I opted for the git mv command as my preferred solution because this was the first method I tried and for my use case — considering the number of files — it worked! Also, having no clue why Mac OS have case-insensitive file system and how, in other ways, git config’s ignorecasecommand affects the configuration — it might cause unforeseen issues down the line, I remained with this option. But, if I had multiple files or if the similar issues arises in the future, I’d certainly consider going with the git config option so that I would not have to repeatedly use the git mvcommand.

--

--