在git中使用具有相同名称但在Windows中具有不同大小写的目录

时间:2015-01-02 22:11:05

标签: windows git github

我想从Windows中的git repo中提取两个名为Foofoo的目录。这两个文件夹都有不同的内容。

由于Windows不区分大小写,并且不允许具有相同名称但不同大小写的文件夹,如何推送到git repo?

2 个答案:

答案 0 :(得分:6)

简短的回答:你不能。

由于这是对底层文件系统(NTFS)的限制,而不仅仅是Windows,因此您无法真正做到这一点。不同的外壳之间的文件系统没有区别;因此,即使Git能够跟踪差异,它也无法将这些差异传达给文件系统。

可能可以做的是创建部分提交,你只需要将文件添加到正确的文件夹(你需要在其间重命名以获得不同的大小写)。但那将是非常不切实际的。

最佳解决方案是不要使用名称冲突的多个文件夹。即使在区分大小写的文件系统上,也只会让事情变得更加混乱。

答案 1 :(得分:1)

作为poke答案的后续内容,您需要将这些目录分成不同的名称,或者将它们正确地合并为一个名称,具体取决于您的需要。它们不能与其他案例具有相同的名称,并且可以在Windows中运行(无论如何都以明确而明显的方式)。

我意外地在同一条船上结束了。我不确定如何,因为我一直在使用Windows,但在某些时候我更改了repo目录中的案例,一些文件最终保留在" old&#34的目录中;名称和一些与#34;新"名称。在我的Windows机器上,它们都是新名称,但是当我将repo拉入Linux时发现了这个问题,并在我查看我的Assembla repo时确认了拆分。

要解决此问题,我首先将其克隆到Windows计算机上的单独位置。这样做,所有文件都在一个目录中再次出现,因为显然两个目录刚刚合并。然后我将问题目录重命名为" temp",(使用TortoiseGit"重命名"操作)。然后,我将回购克隆克隆到另一个位置。此时,这两个目录实际上在Windows中分开了。我有一个" temp",加上" old"的目录。名称。

因为我确实想要它们在一个目录中(在所有平台上!),我将文件移出旧的命名目录到" temp",然后删除了" old"目录。接下来,我将temp(使用TortoiseGit"重命名"再次操作)重命名为我想要的所有内容,提交并再次推送的名称。最后,我将更改删除到我的原始仓库,我的linux,然后查看Assembla。一切都终于达成一致,所以我删除了那些临时克隆并称之为一天。