2010-10-13 180 views
51

我想将文件夹从“Frameworks”重命名为“frameworks”,但git不会让我添加新的小写名称。我想它对待文件名不区分大小写,是吗?Git:文件重命名

一个git add frameworks/ -f没有帮助

+0

哪个操作系统? – 2010-10-13 06:05:34

+0

我运行MacOS 10.6 – 2010-10-13 06:08:20

回答

97

你可以试试:


但情况(Windows上的实例)中的问题msysgit issue 228描述(再次:这应该now -- June 2014 -- work with git 2.0.1

总有设置ignorecase假的一个选项配置文件将强制Unix像Git语义在NTFS之上。
的Git支持这种行为,但它不是默认 - 但从NTFS点a.txtA.txt是同样的事情 - 这样的Git尝试保留,由于大多数用户所期望

作为一个更好的解决方法,您可以

git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt 

,这也改变了存储在磁盘上的文件的情况。

本博客文章illustrates the same issue on MacOs一个重订期间:

在Mac OS X文件系统默认是,他们是不区分大小写。 FFFFFF.gifffffff.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 

,所以如果newnameoldname冲突,你需要让他们不同的(即使它只是短暂的一段时间),因此git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt

+0

我已经尝试过'git mv',但它给了我致命的结果:'重命名'框架'失败:无效参数' – 2010-10-13 06:13:40

+0

@Erik:你试过的命令行是什么? – VonC 2010-10-13 06:14:24

+1

好吧,2步'git mv'确实有效! – 2010-10-13 06:20:31

1

我有一个类似的问题,无法获得新的文件夹名称(不同的情况下)在远程回购更改。我发现最简单的解决方案只是将文件移出回购并提交。触发删除操作。然后重新添加,当我添加时,它进入了适当的情况。

2

如果您碰巧在Github上托管,则可以在其网站上使用重命名功能。不得不改变5个文件的外壳,发现它工作得很好。