我通过将第一个字母去大写来更改了一些文件名,如name.jpg中的name.jpg。Git无法识别这些更改,我不得不删除这些文件并再次上传。在检查文件名的更改时,Git是否可以区分大小写?我没有对文件本身进行任何更改。
当前回答
在OSX下,为了避免这个问题并避免在不区分大小写的文件系统上开发时出现其他问题,可以使用Disk Utility创建区分大小写虚拟驱动器/磁盘映像。
运行磁盘实用程序,创建新的磁盘映像,并使用以下设置(或根据需要进行更改,但要区分大小写):
确保告诉git它现在在区分大小写的FS上:
git config core.ignorecase false
其他回答
当你做了很多文件重命名,其中一些只是改变了大小写,很难记住是哪一个。手动“git移动”文件可能需要一些工作。因此,在文件名更改任务期间,我要做的是:
将所有非git文件和文件夹删除到不同的文件夹/存储库。提交当前的空git文件夹(这将显示为所有文件已删除。)将所有文件添加回原始git文件夹/存储库。提交当前非空的git文件夹。
这将解决所有的案例问题,而不需要找出您重命名的文件或文件夹。
修复整个repo上的git文件名大小写:
git rm -r --cached .
git add --all .
git status ##Review that **only** changes staged are renames
## Commit your changes after reviewing:
git commit -a -m "Fixing file name casing"
git push origin master
@Uriahs Victor评论解释:
此命令实际执行的操作是删除git认为仍然存在的文件/文件夹名称。所以它会清除缓存,但将所有内容保留在当前文件夹中您的本地更改),但它会发现其他错误情况文件夹/文件不再存在,因此将在git中显示为已删除地位然后你可以向上推github,它将删除错误案例的文件夹/文件。这个答案有一个图形描述命令的含义。
使用以下命令:
git config --global core.ignorecase false
您可以全局配置git系统,使其对文件和文件夹名称区分大小写。
我制作了一个bash脚本,将存储库文件名小写:
function git-lowercase-file {
tmp="tmp-$RANDOM-$1"
git mv -f $1 $tmp
git mv -f $tmp ${1,,}
}
那么你可以这样使用它:
git-lowercase-file Name.jpg
在OSX下,为了避免这个问题并避免在不区分大小写的文件系统上开发时出现其他问题,可以使用Disk Utility创建区分大小写虚拟驱动器/磁盘映像。
运行磁盘实用程序,创建新的磁盘映像,并使用以下设置(或根据需要进行更改,但要区分大小写):
确保告诉git它现在在区分大小写的FS上:
git config core.ignorecase false
推荐文章
- 如何预览git-pull?
- 如何删除git历史记录中的特定修订?
- 如何获得Git存储库中的Git存储库名称?
- 当git说它正在“解析delta”时,它实际上在做什么?
- Git命令将一个文件夹移动到另一个文件夹
- 在单个文件中重新启动/撤消冲突解决方案
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到