我通过将第一个字母去大写来更改了一些文件名,如name.jpg中的name.jpg。Git无法识别这些更改,我不得不删除这些文件并再次上传。在检查文件名的更改时,Git是否可以区分大小写?我没有对文件本身进行任何更改。
当前回答
若并没有工作,使用git-rm文件名从磁盘中删除文件并将其添加回。
其他回答
我制作了一个bash脚本,将存储库文件名小写:
function git-lowercase-file {
tmp="tmp-$RANDOM-$1"
git mv -f $1 $tmp
git mv -f $tmp ${1,,}
}
那么你可以这样使用它:
git-lowercase-file Name.jpg
因此,GitHub如何处理这种区分大小写的部署问题有很多解决方案。
在我的例子中,我已经将文件名的大小写约定从大写改为小写。
我相信git可以跟踪更改,但这个命令git-config-core.ignorecase false指示git如何在幕后操作
在我的例子中,我运行了命令,git突然有很多文件要跟踪,标记为未跟踪。
然后我点击gitadd,然后git提交并再次在netlify上运行我的构建。
然后可以跟踪现在显示的所有错误,例如找不到模块:无法解析“”/Components/ProductRightSide位于/opt/build/rebo/Components/products中,并已修复,以便git能够成功跟踪和实施更改。
这是一个很好的解决方法,也可以避免沮丧,但相信我,这肯定会奏效的。
PS:解决问题后,您可能需要运行命令git-config-core.ignorecase true还原git如何区分大小写。
此外,请注意git-config-core.ignorecase-false与其他文件扩展名存在问题,因此您可能需要注意,如果您知道自己在做什么并且确信这一点,请执行此操作。
这是netlify上的一条线索,可能会有所帮助
我在MacOS上多次遇到过这个问题。Git区分大小写,但Mac只保留大小写。
有人提交了一个文件:Foobar.java,几天后决定将其重命名为Foobar.java。当你拉最新的代码时,它失败了。以下未跟踪的工作树文件将被签出覆盖。。。
我所看到的解决这一问题的唯一可靠方法是:
git rm Foobar.java用一条不能错过gitcommit-m'TEMP Commit!!'的消息提交它拉这将弹出一个冲突,迫使您合并冲突-因为您的更改删除了它,但另一个更改重命名了它(因此出现了问题)接受您的更改,即“删除”git rebase—继续现在放下你的解决方法gitrebase-i HEAD~2,放下TEMP COMMIT!!确认文件现在名为FooBar.java
我们可以使用gitmv命令。例如,如果我们将文件abcDEF.js重命名为abcDEF.js,那么我们可以从终端运行以下命令
git mv -f .\abcDEF.js .\abcdef.js
在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:命令未找到