git不区分大小写吗?


96

在我的部分承诺的第一个承诺中,该承诺_Electronics以大写字母开头,然后将其更改为_electronics

cygwin下的Git在提交新名称后忽略了大小写,因此我在目标存储库中手动更改了名称。

现在,有时会将_electronics提交的部分更改为_Electronics

我做错了什么?


9
您在什么操作系统上?
基思·汤普森

10
您正在使用什么文件系统?
安德鲁·马歇尔

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

您不是很高兴Windows决定不区分大小写吗?
卡斯卡贝尔2011年

4
Windows不区分大小写,但有时(今天更常见)保留大小写。
Arafangion

Answers:


73

这将被视为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和仅更改目录的大小写


看起来像是正确的(除了我从大写字母变为小写字母)
JAKK 2011年

我偷看了一下,只要我习惯了cygwin,就更舒适地使用
cygwin-

你可以做git mv file.txt File.txt。不确定这是否是新的git功能。
菲尔

107

它取决于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。

在此回复中,有关更改Git中文件名大小写的更多详细信息。


79
这是imo的正确答案。为了将来我,请git config --unset-all core.ignorecase && git config --system core.ignorecase false与sudo一起使用。
Znarkus 2012年

2
与James同上,@ Znarkus已在OS X上确定此问题的解决方法,谢谢!
Craig Nakamoto

1
@Znarkus也可以在Windows上使用。美丽。
Orlade 2013年

9
@Znarkus,在OSX上执行此操作的问题在于,当您通过查找程序重命名文件并且仅更改大小写时,git会将重命名的版本视为一个全新的文件,但不会生成相应的“删除”文件旧版本的操作。因此,如果您提交并推送到github,则github将同时具有旧名称和新名称的文件,但是您的本地系统将仅具有新文件,而git则不明智。
ivanreese 2014年

2
@spiralganglion对于OSX上的Web开发人员,我真的可以建议创建区分大小写的分区,然后将其挂载为www目录。
Znarkus 2014年

23

这要容易得多:

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

1
您是否在不区分大小写的文件系统上尝试过此操作?
爱德华·汤姆森

1
我最初将其作为原始海报阅读,试图对文件夹而不是文件进行大小写更改。现在,我重新阅读了此内容,目前尚不清楚。确实,mv -f将为一个文件工作。
爱德华·汤姆森

21
git config --system core.ignorecase false

0

在我的情况我有两个文件夹testsTests这表明在Github上两个单独的文件夹,但一个Tests在Windows文件夹中。我的目的是将两者结合在一起tests

我使用以下方法:

  1. 新建一个文件夹 temp
  2. 将所有内容从复制Teststemp
  3. 删除 Tests
  4. 执行 git rm Tests -r
  5. 重命名temptests

0

我试图解决此问题,并且在Windows10上成功

假设在bitbucket TEST和test上有两个文件夹,但是当我在磁盘上克隆存储库时,它仅创建TEST,并且我想将test作为包含所有文件的git上的单个文件夹保存。

我将需要在命令行上执行以下命令git mv TEST test1 -f git mv text1 test -f git commit -m“ reaming ...” git push

现在,您将看到在bitbucket上更正了文件夹层次结构。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.