如何重命名git中仅因大小写而异的文件?


14

在我的git(Xcode)项目中,我提交了不正确大小写的文件名。现在我去尝试重命名它,但是当我提交时,我得到:

致命:不会添加文件别名“ MyProject / MyFile.h”(索引中已经存在“ MyProject / MyFilE.h”)

我敢肯定这是因为git以前没有在不区分大小写的文件系统(如HFS +)上运行。但是我该如何解决呢?

我尝试将两个文件重命名为其他文件,然后提交,然后将其重命名为我想要的文件,但仍然失败(带有相同的错误消息)。

Answers:


21

正如关于stackoverflow的询问和回答那样,有一种更简单的方法可以执行此操作,而不涉及在磁盘映像文件中创建新的文件系统:

将现有文件移到一边,提交该动作,然后根据需要维护和提交的情况将其移回。做完了

例:

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"

为了避免链接腐烂,我们通常会要求您将链接后面的答案的相关部分复制到答案的主体中。
伊恩·C

谢谢@ ian-c。我希望此规则不适用于stackexchange系列内部的链接。
mspasov 2012年

1
是的,我明白您的意思,但是一致性很好。
伊恩·C

奇怪的。我很确定尝试过此方法,但今天它可以工作了。谢谢。
肯(Ken)

2

我尚未找到直接在不区分大小写的文件系统上解决此问题的方法,您需要区分大小写的文件系统。

幸运的是,Mac OS X具有良好的虚拟磁盘安装支持,因此您可以轻松快捷地在计算机上获取(制作)区分大小写的(临时)文件系统。

打开“磁盘工具”,创建一个新映像,并将“格式”字段设置为区分大小写的“ Mac OS Extended”版本之一。另外,请确保为存储库设置足够大的空间。

挂载新磁盘,在其上签出git存储库,确保正确命名的文件具有正确的内容,然后删除另一个。提交并推送您的更改,然后您可以卸载磁盘映像并将其删除。

如果您没有要克隆的远程服务器(即您只是在硬盘驱动器上本地运行git repo),请记住您可以直接从硬盘驱动器上的其他git存储库进行克隆。


1
这是非常费力的工作。您可以执行此操作,而不必在磁盘映像文件中启动新的文件系统。
伊恩·C

1

第1步:只是使用一个比其他字母更不同的名称来重命名该文件。只需选择一个与当前名称和您要提供的名称不同的随机名称即可。

步骤2:通过GUI(Xcode)或CLI(Terminal)提交此文件

第3步:首先要重命名文件。因此,现在,与以前的名称相比,还有更多区别。

步骤4:再次提交重命名的文件。

不需要魔术。您可以选择通过GUI或CLI提交。


0

我使用sourcetree。如果不使用CLI,则很容易做到这一点。将文件重命名为另一个名称(例如,将Index.php更改为Index_old.php),然后提交并按..再次将名称更改为所需的名称(index.php),然后提交并提交。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.