如何在Git中提交仅区分大小写的文件名更改?
我通过将第一个字母大写改为如何在Git中提交仅区分大小写的文件名更改?,git,case-sensitive,git-commit,git-config,Git,Case Sensitive,Git Commit,Git Config,我通过将第一个字母大写改为name.jpg来更改一些文件名,如name.jpg。Git无法识别这些更改,我不得不删除这些文件并再次上传。在检查文件名的更改时,Git是否有一种区分大小写的方法?我没有对文件本身做任何更改 Git有一个配置设置,告诉它是需要区分大小写还是不区分大小写的文件系统:core.ignorecase。要让Git区分大小写,只需将此设置设置为false。(如果您已经推送了文件,请小心,然后在给出其他答案的情况下,您应该首先移动它们) 请注意,在不区分大小写的文件系统上,将此选
name.jpg
来更改一些文件名,如name.jpg
。Git无法识别这些更改,我不得不删除这些文件并再次上传。在检查文件名的更改时,Git是否有一种区分大小写的方法?我没有对文件本身做任何更改 Git有一个配置设置,告诉它是需要区分大小写还是不区分大小写的文件系统:core.ignorecase
。要让Git区分大小写,只需将此设置设置为false
。(如果您已经推送了文件,请小心,然后在给出其他答案的情况下,您应该首先移动它们)
请注意,在不区分大小写的文件系统上,将此选项设置为false通常不是一个好主意。这样做会导致奇怪的错误。例如,以仅更改字母大小写的方式重命名文件将导致git报告虚假冲突或创建重复文件(来自Mark Amery的注释)
文档
从:
core.ignorecase
如果为true,该选项将启用各种变通方法,使git能够更好地在不区分大小写的文件系统(如FAT)上工作。例如,如果一个目录列表在git需要makefile
时发现makefile
,git将假定它实际上是同一个文件,并继续将其作为makefile
来记住
默认值为false,除非或将在创建存储库时探测并设置core.ignorecase
true(如果适用)
不区分大小写的文件系统
据我所知,有两种最流行的操作系统具有不区分大小写的文件系统
- 窗户
- OSX
- 这就是我在OS X上所做的:
git mv File file.tmp
git mv file.tmp file
两个步骤,否则我会得到一个“文件存在”错误。也许可以通过添加
--cached
或诸如此类的方法一步完成。只要您只是重命名一个文件而不是文件夹,就可以使用:
(从Git 2.0.1开始,上面咒语中的
-f
标志是多余的,但在较旧的Git版本中需要它。)在OSX下,为了避免这个问题和在不区分大小写的文件系统上开发时遇到的其他问题,可以使用Disk Utility创建区分大小写的虚拟驱动器/Disk image
运行disk utility,创建新的磁盘映像,并使用以下设置(或根据需要进行更改,但保持区分大小写):
确保告诉git它现在在区分大小写的FS上:
git config core.ignorecase false
我在MacOS上多次遇到过这个问题。Git是区分大小写的,但Mac是唯一保留大小写的 有人提交了一个文件:
Foobar.java
,几天后决定将其重命名为Foobar.java
。当您提取最新代码时,它会失败,因为签出将覆盖以下未跟踪的工作树文件…
我所看到的唯一可靠的解决方法是:
git rm Foobar.java
git Commit-m'TEMP Commit!!'代码>
git-rebase——继续
git-rebase-i HEAD~2
和drop
临时提交代码>FooBar.java
Name.jpg
重命名为name1.jpg
Name.jpg
name1.jpg
重命名为name.jpg
name.jpg
修改为以前的提交
git add name.jpg
git commit --amend
使用SourceTree,我能够从UI完成这一切
文件.ext
为任意.ext
which.ext
重命名为file.ext
这有点乏味,但是如果你只需要对几个文件进行重命名,它会非常快当你做了很多文件重命名,其中一些只是改变了大小写,很难记住哪个是哪个。手动“git移动”文件可能是相当多的工作。因此,在文件名更改任务期间,我将执行以下操作:
这将修复所有案例问题,而无需尝试找出您重命名的文件或文件夹 我从其他答案中尝试了以下解决方案,但均无效:
- a、 )可编辑
- 单击“编辑此文件”图标(看起来像铅笔)
- 更改文件名文本输入中的文件名
git config core.ignorecase false
git add name.jpg
git commit --amend
git rm -r --cached .
git add --all .
git commit -a -m "Versioning untracked files"
git push origin master
git mv CSS CSS2
git mv CSS2 css
git mv -f .\abcDEF.js .\abcdef.js