In a Git repository, how to properly rename a directory?
1. Change a folder's name from oldfolder to newfolder
git mv oldfolder newfolder
2. If newfolder is already in your repository & you'd like to override it and use:- force
git mv -f oldfolder newfolder
Don't forget to add the changes to index & commit them after renaming with git mv.
3. Renaming foldername to folderName on case insensitive file systems
Simple renaming with a normal mv command(not git mv) won’t get recognized as a filechange from git. If you try it with the ‘git mv’ command like in the following line
git mv foldername folderName
If you’re using a case insensitive filesystem, e.g. you’re on a Mac and you didn’t configure it to be case sensitive, you’ll experience an error message like this one:
fatal: renaming ‘foldername’ failed: Invalid argument
And here is what you can do in order to make it work:-
git mv foldername tempname && git mv tempname folderName
This splits up the renaming process by renaming the folder at first to a completely different foldername. After renaming it to the different foldername the folder can finally be renamed to the new folderName. After those ‘git mv’s, again, do not forget to add and commit the changes. Though this is probably not a beautiful technique, it works perfectly fine. The filesystem will still not recognize a change of the letter cases, but git does due to renaming it to a new foldername, and that’s all we wanted :)
Basic rename (or move):
git mv <old name> <new name>
Case sensitive rename—eg. from casesensitive
to CaseSensitive
—you must use a two step:
git mv casesensitive tmp
git mv tmp CaseSensitive
(More about case sensitivity in Git…)
…followed by commit and push would be the simplest way to rename a directory in a git repo.
If you receive this error: fatal: renaming ‘foldername’ failed: Invalid argument
Try this:
*nixOS
git mv foldername tempname && git mv tempname folderName
WinOS
git config core.ignorecase false; git mv foldername tempname; git mv tempname folderName