【问题标题】:Why is github duplicating files?为什么github会复制文件?
【发布时间】:2020-12-12 06:18:53
【问题描述】:

为什么 github 显示重复的文件,但在我的本地机器上却没有显示。我通过从本地机器上的主分支拉出进行检查,但它显示它“已经是最新的”。我该如何解决?我github中的小写文件是旧文件

【问题讨论】:

  • 据我了解,您不希望在您的 repo 中使用小写文件,而只是将“home”小写删除其中的每个文件,这些文件也会自动删除“home”
  • 你的本地机器好像是Mac? OSX 和 MacOS 11 HFS+ 和 APFS 上的文件和目录保留大小写但不区分大小写,因此 Homehome 在 Mac 上是同一个目录。另一方面,Github 在 linux 上运行,其中文件和目录区分大小写,因此Homehome 是不同的目录。 Windows 在 FAT32 上也有同样的问题,但表现得像带有 NTFS 的 Linux
  • @SidPro 我认为这不是一个好主意。我刚刚这样做了,现在我的本地机器也想删除我的大写文件。在github上删除41个文件后,我认为github认为大写也应该被删除。
  • @Bpun1p 我访问过你的 github ,一切都如你所料link
  • @SidPro 但是当我进入我的机器时,我没有得到你在 github 上看到的所有文件,很多文件都丢失了

标签: git github visual-studio-code


【解决方案1】:

不要手动设置或清除core.ignorecase1这只是对 Git 撒谎。 Git 根据您的计算机行为设置此值,方法是在 git initgit clone 时间执行相对耗时的测试。

稍后,Git 读取该值以查看您的计算机在创建和删除各种文件时的行为方式。然后它假定您的计算机将并且确实按照值所说的方式运行。如果您的计算机实际上表现不同,您可能会遇到麻烦。

鉴于您使用的是 Mac,解决此问题的方法是创建一个区分大小写的文件系统,在那里克隆存储库,在那里修复它,提交并将新的提交推送回 GitHub。固定提交将包含您设置的任何文件。然后,您可以将这些提交提取到另一个不区分大小写但保留文件系统的存储库副本中。

换句话说,您只需创建一个新的虚拟磁盘(请参阅this answer),对其进行格式化,然后在其中创建一个(但临时的)存储库,您可以在其中区分大小写方式。一旦你完成这项工作并将提交推回,你将不再需要虚拟磁盘(但你可以保留它:我保留一个)。


1有一些非常特殊的极端情况,知道 Git 如何在内部使用core.ignorecase,您可以将其设置为“错误”以完成某事,然后再次修复它。但最好不要管它,真的。唯一应该设置它的情况是,如果您更改了计算机的行为——例如,如果您在运行 OS #1 的计算机 A 上有一个包含 .git 存储库的备份,而您现在已切换到运行 OS 的计算机 B #2 并恢复备份。如果 OS #2 的行为有所不同,现在是时候更改 core.ignorecase了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    相关资源
    最近更新 更多