我通过将第一个字母去大写来更改了一些文件名,如name.jpg中的name.jpg。Git无法识别这些更改,我不得不删除这些文件并再次上传。在检查文件名的更改时,Git是否可以区分大小写?我没有对文件本身进行任何更改。


当前回答

若并没有工作,使用git-rm文件名从磁盘中删除文件并将其添加回。

其他回答

当你做了很多文件重命名,其中一些只是改变了大小写,很难记住是哪一个。手动“git移动”文件可能需要一些工作。因此,在文件名更改任务期间,我要做的是:

将所有非git文件和文件夹删除到不同的文件夹/存储库。提交当前的空git文件夹(这将显示为所有文件已删除。)将所有文件添加回原始git文件夹/存储库。提交当前非空的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

我在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

因此,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上的一条线索,可能会有所帮助

我从其他答案中尝试了以下解决方案,但没有奏效:

git-mv文件名git rm-f文件名

如果您的存储库是远程托管的(GitHub、GitLab、BitBucket),您可以在源站(GitHub.com)上重命名文件,并强制以自顶向下的方式重命名文件。

以下说明适用于GitHub,但其背后的一般思想应适用于任何远程存储库托管平台。请记住,您尝试重命名的文件类型很重要,也就是说,它是GitHub认为在浏览器中可编辑(代码、文本等)还是不可编辑(图像、二进制等)的文件类型。

访问GitHub.com导航到GitHub.com上的存储库并选择您所在的分支使用站点的文件导航工具,导航到要重命名的文件GitHub允许您在浏览器中编辑文件吗?a.)可编辑单击“编辑此文件”图标(看起来像铅笔)更改文件名文本输入中的文件名b.)不可编辑在新选项卡中打开“下载”按钮,并将文件保存到计算机重命名下载的文件在GitHub.com上的上一个选项卡中,单击“删除此文件”图标(看起来像垃圾桶)确保选中“Commit directly to the branchname branch”单选按钮,然后单击“Commit changes”按钮在GitHub.com的同一目录中,单击“上载文件”按钮从计算机上载重命名的文件确保选中“Commit directly to the branchname branch”单选按钮,然后单击“Commit changes”按钮本地,签出/提取/拉动分支多恩