I'm doing a git rebase
, and I'm stuck because in one commit I have a folder named Proto
, but in the other commit I have a folder named proto
. It was an honest mistake and should have been Proto
in both cases. The best I can figure out here is to try deleting the folder from both commits and then trying the rebase again, but there has to be a better way.
In the past, when I've run into capitalization problems with a file, I've used git mv, but with the folder it won't let me run git mv, and I don't know why.
What's the correct way to fix a folder capitalization problem in git on Windows?
We encountered a similar issue in our git repository on Windows when a large number of files were moved around to different directories.
I fixed our issue the first time manually by cloning the repository to a Linux VM and running a bash script with git mv
commands to fix the file path case issue. This was a painful process so I decided to develop a utility that automates the process.
Git Unite is a .NET console application I wrote using the libgit2sharp library. The program identifies all git index entries with file path case different from what the Windows file system reports.
I wrote a blog posting detailing the tool, usage, and history behind it at Git Unite - Fix Case Sensitive File Paths on Windows
Smuggling folder renames into Git history is difficult, because folders are not tracked -- only files in the folders. Assuming that you want to rename oldFolder
to oldfolder
you could try the following:
Rebase interactively from the point where you first created a file in oldFolder
. Edit every commit that adds files to this folder. When interactive rebase stops, create newFolder
and execute git mv oldFolder/* newFolder/
. Do the latter for each stop of the interactive rebase.
Obviously, you cannot have oldFolder
and newFolder
be two differently capitalized versions of the same word in Windows. Hence, repeat step 1 to rename newFolder
to oldfolder
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With