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

Ele*_*hoy 189 windows git filenames

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

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

Igo*_*aka 312

看看这里有关如何做的更多提示:

如何让git忽略大小写的变化?

要么:

git mv -f name.java Name.java
Run Code Online (Sandbox Code Playgroud)

  • 这在NTFS和Windows 10上对我很有用. (10认同)
  • 除此之外,这不适用于FAT文件系统.我在拇指驱动器上携带一些项目代码,案例变化真的很痛苦. (8认同)
  • 这当然是正确的方法,但是,如果您需要重命名大量文件,则可能会很乏味。如果您已经以某种方式在文件系统中重命名它们并且您只想提交这些更改,您可以重命名一些父文件夹,对新重命名的文件夹执行`git add`,不要提交,将文件夹名称更改回它应该是什么,再次`git add`它然后提交。 (3认同)
  • 这在 NTFS 系统和 Windows 10 上对我不起作用 (2认同)

Chr*_*isF 48

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

  1. 重命名sourceCode.javaanything.you.like
  2. 重命名anything.you.likeSourceCode.java

回到我们使用Perforce的那些日子里,我们确实遇到了这个问题,这是我们能想到的唯一解决方案.

  • 只是给别人一个注释:没有必要在中间提交,但有必要添加到git的索引以注意更改 (12认同)

Pie*_*kel 28

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

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

这样,您就可以进行包含重命名的单个提交,并且可以轻松更改整个目录.

  • 为浴全局和本地设置做:$ gti config --global core.ignorecase false $ gti config core.ignorecase false (4认同)

Nil*_*mat 15

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

git rm --cached <file name or directory>
git add <file name or directory>
Run Code Online (Sandbox Code Playgroud)

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

git rm -r --cached <directory>
git add <directory>
Run Code Online (Sandbox Code Playgroud)

  • @Alejandro 你说的是错误的。我刚刚测试了它,git 识别了重命名,没有任何问题。与其他情况一样,该文件在索引中显示为已删除/新文件,但在提交时,git 注意到它刚刚被重命名。 (4认同)
  • 确实是最简单的一种。 (2认同)

jwg*_*jwg 6

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

请参阅具有相同名称但不同大小写的文件的Git rebase问题

我不确定这个问题是否比你的项目中永久命名的非常规命名文件更糟糕,但是值得知道是否有很多用户有很多分支,最终都需要合并.