如何在Git中提交区分大小写的文件名更改?
我已经改变了一些文件的名字, Name.jpg
第一个字母的大写,如Name.jpg
到Name.jpg
。 Git不能识别这个变化,我不得不删除这些文件并重新上传。 在检查文件名的变化时,有没有办法让Git区分大小写? 我没有对文件本身做任何改变。
你可以使用git mv :
git mv -f OldFileNameCase newfilenamecase
Git有一个configuration设置,告诉它是区分大小写还是不敏感: core.ignorecase
。 要告诉Git是区分大小写的,只需将此设置设置为false
:
git config core.ignorecase false
文档
从git config
文档 :
core.ignorecase
如果为true,这个选项启用了各种解决方法,使git可以更好地处理不区分大小写的文件系统,如FAT。 例如,如果一个目录列表在git需要
Makefile
时发现makefile
,git会认为它是真正的文件,并继续记住它为Makefile
。默认值是false,除了git-clone(1)或者git-init(1)会在创build仓库的时候探测和设置
core.ignorecase
true。
不区分大小写的文件系统
我所知道的两个最stream行的操作系统是不区分大小写的文件系统
- 视窗
- OS X
这就是我在OS X上所做的:
git mv File file.tmp git mv file.tmp file
两步,否则我得到了“文件存在”的错误。 也许可以通过添加 – --cached
等来完成。
在OSX下,为避免此问题并避免在不区分大小写的文件系统上进行开发时出现其他问题,可以使用“磁盘工具” 创build区分大小写的虚拟驱动器 /磁盘映像。
运行磁盘实用程序,创build新的磁盘映像,并使用以下设置(或更改,只要你喜欢,但保持区分大小写):
一定要告诉Git它现在在一个区分大小写的FS:
git config core.ignorecase false
使用SourceTree,我能够从UI中完成这一切
- 将
FILE.ext
重命名为whatever.ext
- 阶段该文件
- 现在将
whatever.ext
file.ext
重命名为file.ext
- 再次login该文件
这有点乏味,但是如果你只需要做几个文件就很快
1)将文件Name.jpg
重命名为name1.jpg
2)提交删除的文件Name.jpg
3)将文件name1.jpg
重命名为name1.jpg
4)ammend增加文件name.jpg到以前的提交
git add git commit --amend
我在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!!'
- 拉
- 这将popup一个冲突,迫使你合并冲突 – 因为你的更改将其删除,但其他更改已重命名(因此问题)它
- 接受你的改变,即“删除”
-
git rebase --continue
- 现在放下你的解决方法
git rebase -i HEAD~2
并drop
TEMP COMMIT!!
- 确认该文件现在被称为
FooBar.java
当你做了很多文件重命名,其中一些只是一个套pipe的变化,很难记住哪一个是哪个。 手动“git移动”的文件可以相当一些工作。 所以在我的文件名更改任务中,我会做的是:
- 删除所有非git文件和文件夹到不同的文件夹/存储库。
- 提交当前空的git文件夹(这将显示为所有文件被删除。)
- 将所有文件添加回原始的git文件夹/存储库。
- 提交当前非空的git文件夹。
这将解决所有的案件问题,而不是试图找出你重命名的文件或文件夹。
我从其他答案尝试以下解决scheme,他们不工作:
-
git mv filename
-
git rm -f filename
如果您的存储库像我的一样在GitHub上托pipe,则可以重命名原始文件(GitHub.com),并以自顶向下的方式强制文件重命名。 以下是我所做的:
- 访问GitHub.com
- 在GitHub.com上导航到您的存储库并select您正在工作的分支
- 使用网站的文件导航工具导航到您要重命名的文件
- 点击“编辑这个文件”图标(它看起来像一支铅笔)
- 更改文件名文本input中的文件名
- 确保select“直接提交
branchname
分支”单选button - 点击“提交更改”button
- 在本地,检查分支
- 如果您使用的是GitHub桌面客户端,请单击“同步”button
- 完成