我正在开发一个在Git版本控制下的OS X Lion项目。一开始我的目录名是小写的,后来改为大写(例如 emailaddresses => EmailAddresses),但Git好像没有意识到这个变化。运行git ls-files
和其他命令时,Git仍然认为目录名是小写的。
这会有影响吗?我该怎么做让Git识别这个变化呢?
您可以通过运行以下命令告诉git考虑大小写:
git config core.ignorecase false
你可能正在使用大小写不敏感(但保留大小写)的HFS+文件系统。我通常会这样解决这个问题:
$ git mv somename tmpname
$ git mv tmpname SomeName
git push origin master
。如果 git 拒绝更新远程存储库,则可能需要添加一个虚拟文件(例如 touch stam
)并进行推送。然后再删除 stam 并再次推送。 - Rahavgit mv --force somename SomeName
代替。 - Paul R--force
也无法工作,因为 Git 说文件不存在。 - Taimoor Ahmad这是因为 Mac OS X 实现了区分大小写和不区分大小写的功能,旨在帮助您。
虽然其他答案中的双重重命名建议可以起作用,但我建议使用“--force”以获得最佳实践结果:
$ git mv --force somename SomeName
注意:如果您在不使用强制选项的情况下尝试,git会像这样拒绝您:
$ git mv somename SomeName
$ fatal: destination exists, source=somename, destination=SomeName
在上述示例中,git命令失败,并且文件系统或git索引中没有更改的文件。
git
命令只能在具有GIT存储库的目录中使用。 - David Manpearl尝试在你的 .gitconfig 文件中将 git 配置选项 core.ignorecase 更改为 false。
git config core.ignorecase false
。 - iforgotmypassword将文件夹重命名为 temp
:
mv Folder temp // It will rename your Folder to temp
暂存和提交:
git add .
git commit -m "Temp"
将temp
文件夹重命名为您选择的名称:
mv temp folder // It will rename temp folder to the name of your choice(folder)
git add .
git commit -m "Folder Fixed"
完成 - 您现在可以推送。For Exp, you want to change folder name from Base to base
1. mv Base base2
2. git add . && git commit -m "Fix folder name problem (wip)"
3. mv base2 base
4. git add . && git commit -m "Fixed folder name problem"
git mv AAA aaa
或git mv -f AAA aaa
,它将不起作用,并出现错误fatal: renaming 'AAA' failed: Invalid argument
。AAA
和aaa
是同一个文件夹/文件,将AAA
移动到aaa
意味着将AAA
移动为aaa/AAA
。git mv AAA aaa.1
git mv aaa.1 aaa
我希望这对你有所帮助。
这些方法都没有帮助我,因为我的情况是本地文件夹大小写不一致,而远程文件夹大小写一致,我的分支落后了,无法拉取,因为文件夹结构中的大小写差异。
唯一的解决方法是删除本地分支,然后检出远程分支。
您也可以手动完成此操作,而无需使用GIT命令。在.git
文件夹内,只需删除名称为SomeName
的文件夹。然后将文件夹somename
重命名为SomeName
。更多详细信息请参见:如何修复文件夹名称设置为大写和git转换为小写