【问题标题】:Git seeing imaginary files (case sensitivity) [duplicate]Git看到虚构的文件(区分大小写)[重复]
【发布时间】:2016-07-19 18:04:33
【问题描述】:

我有两个文件已从小写重命名为大写,最令人沮丧和最疯狂的事情发生了。 Git 现在看到两个副本,一个带有大写名称,一个带有每个文件的小写名称。让我明确一点:不存在这样的小写文件。 Git 确实看到了虚构的文件。

为了对这些文件中的任何一个进行更改,我必须“同时”提交真实文件和虚构文件。尝试丢弃一个未暂存的文件将删除相反情况下的更改,例如丢弃 server.h 将创建带有反转更改的 Server.h,反之亦然,因此无法删除。

  • 2 个文件
  • 最初为小写(server.h、server.cpp)
  • 重命名为大写(Server.h、Server.cpp)
  • Git 现在看到两个副本
    • “git status”输出:
      修改:Server.h
      修改:Server.cpp
      修改:server.h 修改:server.cpp

如上所述,不存在重复的文件 server.h 和 server.cpp,全部小写。

我尝试更改 .git/config 以启用区分大小写,这不会改变任何内容。还有什么可能导致这些重复的、虚构的文件?

编辑:如上所述,启用或禁用区分大小写设置并不能解决问题,并且尝试删除任一文件都不起作用。

【问题讨论】:

  • 你好。你的描述有点乱。你能提供你正在使用的命令和来自 git 客户端的消息吗?
  • 你能添加一个具体的例子吗? IE。导致这种混乱的一系列操作的控制台输出?
  • 参考这个,stackoverflow.com/a/19956280/9792373是一样的

标签: git windows-8.1 case-sensitive


【解决方案1】:

我认为这只是重命名文件时发生的一些常见混淆的结果。基本上,在这种情况下,您需要git add“删除”(小写)和“添加”(大写)文件。

作为测试,如果您输入git add --all,您应该会得到类似“重命名:server.h -> Server.h”的结果。如果没有发生这种情况,只需输入 git reset HEAD . 即可恢复到以前的状态。

尽管如果您有比您在问题中指出的更复杂的更改,并且您害怕丢失一些其他修改,您可能还想查看git stash 命令。

【讨论】:

  • 问题不是如何提交文件,问题是为什么文件系统上不存在这些幻像文件时,它们存在于git中。
  • 刚刚尝试了您的建议,git add 没有显示“重命名:...”,它显示了我在问题中显示的内容,并且 git reset HEAD 没有删除双文件。我知道我必须添加这两个文件才能使其工作,我只是问为什么存在幻像。
  • 我很抱歉 - 我误解了。这确实很奇怪。在“虚构”文件上运行git diff 会发生什么?它与“真实”文件的差异相比如何?
猜你喜欢
  • 1970-01-01
  • 2012-02-12
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 2016-11-24
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
相关资源
最近更新 更多