Found an awesome GIT tip for OSX users which are having problems with case-sensitivity and renaming of files. The issue occurs when you use the default OS X disk format (case-preserving, but not case-sensitive) and try to rename a file or folder in git by changing letters to uppercase/lowercase.
A typical hack around the issue is to execute multiple commands:
git mv filename filename_tmp git mv filename_tmp Filename git commit -m "Set correct case for filename"
gives no guarantee that it won't f*ck up any other users checkout which most likely need to remove the file or checkout a clean copy of the git repo.
However this approach caused me major headaches when I was doing a pull-request and had to squash my commits before pushing it (and one commit included the case changes to filenames). I did not find a good way to fix this problem. Also, other people in your team will not get the filename changes you just comitted on a
git pull. So, a new approach to the solution!
Enter the world of read-write disk image using Disk Utility and use this newly created volume as your base working directory for working with git-repos! If all OS X users in your oragnization/company uses this approach, you should be good!
Here's what you do:
- Launch Disk Utility
- Choose "New Image"
- Enter a nice Name for your Volume, e.g "Workspace"
- Set the size to something that will most likely fit your needs (resizing is a whole another story)
- Select "Mac OS Extended (Case-sensitive, Journaled)" in "Format".
- Select "Single Partition - Apple Partition Map" in "Partitions"
- Ensure "sparse bundle disk image" is set in "Image Format".
- Save it somewhere on your hard drive
Now, when you mount this disk image you can move all your git repos over to this Volume to enjoy a git that doesn't get confused by those pesky case-changes!
(PS: You can choose to add the Disk Image created to your Login Items in the OS X System Preferences to have it automatically mount on boot)
Update: My new favorite way of dealing with this is to buy a Nifty MiniDrive microSD card adapter that allows you to always have with you an extra harddrive without anything "sticking out" of your macbook. With this option I always carry a extra 64 GB drive volume formatted as Mac OS Extended (Case-sensitive, Journaled) which I use for my git projects.