我通过对第一个字母进行去大写来改变一些文件名,就像在Name.jpg
到name.jpg
一样。 Git无法识别此更改,我不得不删除文件并再次上传。在检查文件名的变化时,Git是否有区分大小写的方法?我没有对文件本身进行任何更改。
你可以使用git mv:
git mv -f OldFileNameCase newfilenamecase
我使用了以下步骤:
git rm -r --cached .
git add --all .
git commit -a -m "Versioning untracked files"
git push origin master
对我来说是一个简单的解决方案
与@ Sijmen的答案类似,这是在重命名目录时在OSX上有用的东西(灵感来自另一篇文章的this答案):
git mv CSS CSS2
git mv CSS2 css
简单地做git mv CSS css
给出了无效的参数错误:fatal: renaming '/static/CSS' failed: Invalid argument
也许是因为OSX的文件系统是case insensitive
如果您使用的是Django,那么collectstatic也无法识别大小写差异,您必须在静态根目录中手动执行上述操作。
我在MacOS上多次遇到过这个问题。 Git区分大小写,但Mac只保留大小写。
有人提交了一个文件:Foobar.java
,几天后决定将其重命名为FooBar.java
。当您提取最新代码时,它会失败并使用The following untracked working tree files would be overwritten by checkout...
我见过的唯一可靠的解决方法是:
git rm Foobar.java
git commit -m 'TEMP COMMIT!!'
git rebase --continue
git rebase -i HEAD~2
和drop
TEMP COMMIT!!
FooBar.java
当你完成了大量的文件重命名,其中一些只是改变套管时,很难记住哪个是哪个。手动“git moving”文件可能相当有些工作。那么在我的文件名更改任务期间我会做的是:
这将解决所有案例问题,而无需确定您重命名的文件或文件夹。
如果没有任何效果,请使用git rm filename从磁盘中删除文件并将其添加回来。
Git有一个配置设置,告诉它是区分大小写还是不区分大小写:core.ignorecase
。要告诉Git区分大小写,只需将此设置设置为false
:
git config core.ignorecase false
core.ignorecase
如果为true,则此选项启用各种变通方法,以使git能够更好地处理不区分大小写的文件系统,如FAT。例如,如果目录列表在git期望
makefile
时找到Makefile
,git将假设它实际上是同一个文件,并继续记住它为Makefile
。默认值为false,但git-clone(1)或git-init(1)将在创建存储库时探测并设置
core.ignorecase
为true。
我知道的两个最流行的操作系统,它们具有不区分大小写的文件系统
使用SourceTree我可以从UI完成所有这些操作
FILE.ext
重命名为whatever.ext
whatever.ext
重命名为file.ext
这有点单调乏味,但如果你只需要对几个文件进行操作就很快了
这就是我在OS X上所做的:
git mv File file.tmp
git mv file.tmp file
两个步骤因为否则我得到“文件存在”错误。也许可以通过添加--cached
等一步完成。
在OSX下,为了避免此问题并避免在不区分大小写的文件系统上进行开发的其他问题,可以使用“磁盘工具”创建区分大小写的虚拟驱动器/磁盘映像。
运行磁盘实用程序,创建新磁盘映像,并使用以下设置(或根据需要进行更改,但保持区分大小写):
一定要告诉git它现在是一个区分大小写的FS:
git config core.ignorecase false
暂时改变Git的区分大小写有时会很有用。两种可能的方法: -
方法1(非常临时):
git -c core.ignorecase=true checkout mybranch
关闭单个checkout
命令的区分大小写。或者更一般地说:git -c core.ignorecase=
<<true or false>>
<<command>>
。 (感谢VonC在评论中提出这一建议。)
方法2(半永久性):
要更改设置更长时间(例如,如果需要在更改之前运行多个命令):
git config core.ignorecase
(这将返回当前设置,例如false
)。git config core.ignorecase
<<true or false>>
- 设置所需的新设置。git config core.ignorecase
<<false or true>>
- 将配置值设置回其先前的设置。1)将文件Name.jpg
重命名为name1.jpg
2)提交删除文件Name.jpg
3)将文件name1.jpg
重命名为name.jpg
4)修改添加文件name.jpg
到上一次提交
git add
git commit --amend
我从其他答案尝试了以下解决方案,但它们不起作用:
如果您的存储库是远程托管的(GitHub,GitLab,BitBucket),您可以在源(GitHub.com)上重命名文件并以自上而下的方式强制重命名文件。
以下说明适用于GitHub,但其背后的一般概念应适用于任何远程存储库托管平台。请记住您尝试重命名的文件类型,即,它是否是GitHub认为可编辑的文件类型(代码,文本等)或浏览器中的不可编辑(图像,二进制等)。
branchname
分支”单选按钮,然后单击“提交更改”按钮
在GitHub.com上的同一目录中,单击“上载文件”按钮
从您的计算机上传重命名的文件branchname
分支”单选按钮,然后单击“提交更改”按钮Mac OSX High Sierra 10.13在某种程度上解决了这个问题。只需为您的git项目创建一个虚拟APFS分区,默认情况下它没有大小限制并且不占用空间。
Sensitive
git
和ln -s /Volumes/Sensitive/git /Users/johndoe/git
的文件夹你的车将在/Volumes/Sensitive/
How do I commit case-sensitive only filename changes in Git?