gpt4 book ai didi

windows - Windows 上的 Git 在原点大写文件名,在本地小写

转载 作者:可可西里 更新时间:2023-11-01 11:44:57 26 4
gpt4 key购买 nike

我们在工作中被迫在 Windows 上工作,我遇到了问题,奇怪的情况。我们有 github 存储库,在其中我们有一个名为 Something 的目录(首字母大写“S”),但在我的本地我看到这个名为 something 的目录(注意小写 's'),git status 显示工作目录是干净的,即使我在本地更改此目录,例如 SoMeThInG git 说没有任何变化。我怀疑 Windows 是这里的一个问题,因为它不区分大小写。是否可以从 Windows 级别更改此目录名称?或者如何强制 git bash 区分大小写?

更新

我已经从我的虚拟 Fedora 中更改了该文件,但这只是一种解决方法,问题仍未得到解答,如何在 Windows 上正确执行此操作?

最佳答案

在不区分大小写的文件系统上,Git 不会只检测大小写的变化。然而,在提交文件时,实际的大小写仍然反射(reflect)在它被添加到索引的方式中。

所以 git add foogit add FOO 都适用于以任何形式命名的文件 foo(例如FoOfOo),但每个命令实际上都会将该确切名称暂存到存储库中。所以 git add foo 将使名称​​区分大小写 foogit add FOO 将使名称 < em>区分大小写 FOO.

这就是为什么你应该尝试始终使用命令行自动完成文件名,这样你就不会不小心添加了与实际不同大小写的文件。或者使用自动暂存文件的命令,例如git add .,因为这也将使用实际的大小写。

但是,由于 Git 不会检测大小写更改,一旦文件添加了特定的大小写,该大小写将一直使用,直到您明确更改它。这就是为什么可能在文件夹 foo/barFOO/baz 中有文件,它们在物理上都位于文件系统的同一位置,但使用不兼容的路径表示在 Git 内部。所以你在这里应该小心。

综上所述,您可以稍后修复外壳。但要做到这一点,您需要使用 Git 而不是文件系统进行更改,因为 Git 区分大小写而文件系统不区分大小写。所以像 git mv 这样的命令会起作用。与 git rm --cachedgit add 的组合相同。

例如,要修复上述foo/FOO目录的情况,可以这样做(假设文件夹的正确名称应该是Foo):

git mv foo/bar Foo/bar

# or
git rm --cached FOO/baz
git add Foo/baz

您还可以通过从索引中删除所有内容然后将其添加回来来修复每个文件的大小写:

git rm --cached -r .
git add .

这应该将所有重命名暂存为正确的文件大小写。

关于windows - Windows 上的 Git 在原点大写文件名,在本地小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47831629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com