在Windows上更改文件的大小写?

时间:2009-11-24 23:38:53

标签: windows git filenames

我们的git控制代码库中有几个文件要重命名。具体来说,我只想更改文件的大小写,以便sourceCode.java变为SourceCode.java。问题:我在Windows机器上,文件系统认为这些文件名相同。

如何让Windows和Git识别出更改并将其签入?

6 个答案:

答案 0 :(得分:291)

请点击此处查看有关如何操作的更多提示:

How to make git ignore changes in case?

或者:

git mv -f name.java Name.java

答案 1 :(得分:44)

如果您使用的是FAT文件系统,则唯一的选择是进行两阶段重命名:

  1. sourceCode.java重命名为anything.you.like
  2. anything.you.like重命名为SourceCode.java
  3. 回到我们使用Perforce的那些日子里,我们遇到了这个问题,这是我们能够提出的唯一解决方案。

答案 2 :(得分:26)

以下步骤允许我在Windows上更改案例:

  • ignorecase = false;
  • 中将[core]添加到.git/config
  • 将要重命名的文件移出项目目录;
  • 将删除添加到索引;
  • 将所有文件移回原始位置并更改文件和/或目录的大小写;
  • 将所有“新”文件添加到索引中;
  • 删除第一步添加的ignorecase = false

这样您就可以进行一次包含重命名的提交,并且可以轻松更改,例如整个目录。

答案 3 :(得分:9)

在我看来,缺少一种简单的方法。您可以针对单个文件,特定目录甚至整个存储库执行此操作。只需以您喜欢的任何方式重命名文件,然后执行以下命令即可:

git rm --cached <file name or directory>
git add <file name or directory>

如果您还想影响子目录,则必须使用-r标志:

git rm -r --cached <directory>
git add <directory>

答案 4 :(得分:6)

小心点。这样做可能会导致无法合并的更改。当在Windows上合并时,Git会感到困惑,因为它无法确定旧的大写名称和新的小写名称是否是同一个文件(对于Git它们不是,但对于文件系统而言)。要合并,您必须执行一些手动解决方法,例如在合并之前删除文件。

请参阅Git rebase issue with files of same name but different case

我不确定这个问题是否比在您的项目中永远存在一个非常规命名文件更糟糕,但是值得了解的是,是否有很多用户需要拥有大量分支机构最终合并。

答案 5 :(得分:1)

使用NTFS(或FAT),单个git mv命令无法解决问题。 这个问题显示了一种有效的技术: git mv and only change case of directory