在我们的git控制的代码库中,有几个文件我想重命名。具体来说,我只想改变文件的大小写,例如,让sourceCode.java变成SourceCode.java。问题是:我在Windows机器上,文件系统认为它们是相同的文件名。
sourceCode.java
SourceCode.java
如果你在一个FAT文件系统上,你唯一的选择是做一个两阶段重命名:
anything.you.like
在使用Perforce的时候,我们遇到了这样的问题,这是我们能想到的唯一解决方案。
git mv
-f
git mv -f name.java Name.java
下面的步骤允许我在Windows上更改外壳:
ignorecase = false
.git/config
[core]
这样你就有了一个包含重命名的单一提交,它使更改例如整个目录变得很容易。
小心些而已。这样做可能会导致无法合并的更改。Git在Windows上合并时会感到困惑,因为它不能确定旧的大写名称和新的小写名称是否是同一个文件(对于Git来说不是,但对于文件系统来说是)。要合并,你必须做一些手工工作,比如在合并之前删除文件。
看到Git用相同名称但不同情况的文件重基问题
我不确定这个问题是否比在你的项目中永远有一个非常规命名的文件更糟糕,但如果有大量的用户和大量的分支最终都需要合并是值得知道的。
在我看来,缺少一种简单的方法。您可以为单个文件、特定目录甚至整个存储库执行此操作。只要用你喜欢的方式重命名你的文件,然后执行这些命令:
git rm --cached <file name or directory> git add <file name or directory>
如果你也想影响子目录,你必须使用-r标志:
-r
git rm -r --cached <directory> git add <directory>