2011-12-12 171 views
72

在我的部分的第一个承诺中被称为_Electronics它是以大写字母开头,然后我将其更改为_electronicsgit是否不区分大小写?

cygwin下的Git在提交新名称后忽略了这个案例,所以我在目标回购库中手动更改了名称。

现在它有时会将承诺的_electronics部分更改为_Electronics

我做错了什么?

+8

什么OS是你吗? –

+9

你使用的是什么文件系统? –

+0

Windows与cygwin。我的服务器运行Ubuntu Linux。不知道文件系统,我猜ext3或ext2 - 我的提供者配置了最小安装。 – JAkk

回答

64

它将被视为2种不同的东西,但会导致您在非区分大小写的系统上遇到问题。如果是这种情况,请确保您制表符完成任何路径或文件名。此外,为了改变在短短的情况下事物的名称,这样做:

mv file.txt temp.txt 
git add -A 
git commit -m "renaming..." 
mv temp.txt File.txt 
git add -A 
git commit --amend -m "Renamed file.txt to File.txt" 

这是更改提交它们,然后折叠提交的明确方式。较短的方式来做到这一点是操作都在一个索引和工作文件夹:

git mv file.txt temp.txt 
git mv temp.txt File.txt 
git commit -m "Renamed file.txt to File.txt" 

这涉及到调整目录名称,以及:git mv and only change case of directory

+0

看起来像这是正确的(除了我从大写字母改为小写) – JAkk

+0

你在Windows上试过msysgit吗? –

+0

我偷看到它,只要我习惯了cygwin,使用cygwin更加舒服 - 感谢提示 – JAkk

87

这是要依赖于core.ignorecase配置值,在大小写敏感的文件系统中设置为false,在Windows上的msysgit中设置为true。

core.ignorecase

如果为true,此选项允许在不同的解决方法,使GIT中上不区分大小写,如FAT文件系统更好地工作。例如,如果一个目录列表在git需要 “Makefile”时发现“makefile”,git会认为它确实是同一个文件,并且继续 将它记为“Makefile”。

缺省值为false,除非git-clone(1)或git-init(1)将在创建存储库 时探测并设置core.ignorecase为true(如果适用)。

+65

这是正确的答案。对于将来我来说,使用'git config --unset-all core.ignorecase && git config --system core。用sudo忽略错误。 – Znarkus

+0

@Znarkus在OS X上,你的代码完全是我需要的。谢谢! –

+1

同上James,@Znarkus已经在OS X上发现了这个问题的解决方法,谢谢! –

21

这是容易得多:

git mv Electronics electronics -f 
git commit -m "That was easy!" 
+1

您是否在不区分大小写的文件系统上尝试这种方法? –

+2

@爱德华是的,OS X – Arnoud

+1

我最初读这篇文章为原始海报,试图对一个文件夹进行改变格式的重命名,而不是文件。现在我重新阅读这个,目前还不清楚。事实上,'mv -f'可以用于文件。 –

18
git config --system core.ignorecase false