git不区分大小写吗?

时间:2011-12-12 22:00:26

标签: git version-control case-sensitive

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

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

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

我做错了什么?

6 个答案:

答案 0 :(得分:96)

它将取决于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(如果适用于存储库)   已创建。

答案 1 :(得分:67)

它将被视为两个不同的东西,但会导致您在不区分大小写的系统上出现问题。如果是这种情况,请确保选项卡填写任何路径或文件名。此外,要改变事物的名称,请执行以下操作:

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

答案 2 :(得分:22)

这更容易:

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

答案 3 :(得分:20)

git config --system core.ignorecase false

答案 4 :(得分:0)

在我的场景中,我有两个文件夹testsTests,在Github中显示为两个单独的文件夹,但在Windows中显示为单个Tests文件夹。我的目的是将它们都合并为tests

我使用以下方法:

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

答案 5 :(得分:0)

我已经尝试解决了该问题,并且在Windows10上成功了

让我们假设bitbucket TEST上有两个文件夹进行测试,但是当我在磁盘上克隆存储库时,它只会创建TEST,而我想将测试保留为git上包含所有文件的单个文件夹。

我将需要在命令行上执行以下命令 git mv TEST test1 -f git mv text1测试-f git commit -m“重新命名...” git push

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