我想将文件夹从“Frameworks
”重命名为“frameworks
”,但git不会让我添加新的小写名称。我想它会对文件名不区分大小写,是吗?
git add frameworks/ -f
没有帮助
答案 0 :(得分:97)
您可以尝试:
"git mv -f foo.txt Foo.txt"
(注意:这是no longer needed since git 2.0.1)ignorecase
设置为false。但案例问题(例如在Windows上)在msysgit issue 228中描述(再次:这应该now -- June 2014 -- work with git 2.0.1)
总有一个选项可以在配置文件中将
ignorecase
设置为false,这将强制Unix在NTFS之上使用Git语义。
Git支持这种行为,但它不是默认的 - 从NTFS的角度来看a.txt
和A.txt
是一回事 - 所以Git试图像大多数用户所期望的那样保留它
作为更好的解决方法,您可以
git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt
,这也改变了存储在磁盘上的文件的大小写。
这篇博客文章illustrates the same issue on MacOs在rebase期间:
Mac OS X文件系统的默认设置是它们不区分大小写。
FFFFFF.gif
与ffffff.gif
相同。如果您删除有问题的文件,只是从文件系统而不是Git索引,请注意,您可以合并有问题的分支,并让它恢复文件,就好像什么都没发生一样。
步骤非常简单:
$ rm file/in/question.gif $ git merge trunk
无论如何,remember what git mv stands for:
mv oldname newname
git add newname
git rm oldname
,因此,如果newname
和oldname
发生冲突,则需要将它们区分开来(即使只是在短时间内),因此git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt
答案 1 :(得分:2)
如果你碰巧在Github上主持,你可以在他们的网站上使用重命名功能。不得不改变5个文件的大小,发现它工作得很好。
答案 2 :(得分:1)
我遇到了类似的问题,并且无法获得新的文件夹名称(不同的案例)来更改远程回购。我发现最简单的解决方案就是将文件移出repo并提交。触发删除操作。然后重新添加,当我添加时,它带来了正确的情况。