Git 看到假想的文件(区分大小写)

标签 git windows-8.1 case-sensitive

<分区>

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

为了提交对这些文件中任何一个的更改,我必须提交“两个”真实文件和虚构文件。尝试丢弃一个未暂存的文件将导致删除相反情况下的更改,例如丢弃 server.h 将创建 Server.h 并反转更改,反之亦然,因此删除是不可能的。

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

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

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

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

最佳答案

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

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

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

关于Git 看到假想的文件(区分大小写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36330797/

相关文章:

git - 使用 git 使子模块保持最新状态

visual-studio-2012 - 如何将 Windows sdk 8.1 与 Visual Studio 2012 update 3 一起使用

c# - Windows 8.1 音频流不在后台播放

windows-runtime - Windows Phone 8.1 后台任务与前台应用通信

flutter - Flutter 中的区分大小写

git - 在 git 中有可能只推送 5 次提交中的 4 次吗?

在远程分支列表下 merge 和删除分支后仍然可以看到 Git Branch

git - 应该如何为 laravel 4 Composer 包设置 git 子模块?

Git 没有在当前本地分支旁边显示星号

php - SQLite:对特定查询执行区分大小写的 LIKE 查询