【发布时间】:2013-06-25 16:57:37
【问题描述】:
我的 Git 存储库中有一个非常非常旧的文件,其中有很多提交。偶然地,我想将它与以前的版本进行比较,但我发现git diff 5.0 Data/schema.sql 根本没有返回任何输出。
我知道这是错误的,所以我跑了git log Data/schema.sql。再说一遍:没有输出!
我认为这可能是一个 gitignore 问题,所以我完全删除了我的 .gitignore 文件 - 没有变化。我什至尝试过git config --global --get-all core.excludesfile 和git config --system --get-all core.excludesfile - 都没有返回任何输出。
我尝试使用git add 手动添加它。没有错误消息,但在 git status 中根本没有提到该文件 - git 的行为就像我告诉它忽略该文件一样,而且最重要的是,它似乎使其历史无法访问。
到底会发生什么?这让我很紧张——这个文件的历史本身并不是什么大问题,但我担心我的整个回购可能有问题/损坏。
什么可能导致这种行为,我该如何解决?我在 Mac OS X(通过 Homebrew 安装)上运行最新的 git(1.8.3.1)。 Data 目录中的其他文件按预期工作,并且 repo 中的其他文件没有表现出这种行为。
【问题讨论】:
-
在黑暗中戳这里,但 git 用户可能无法读取该文件吗? (基本上是一个 chmod 问题)
-
不,不幸的是,它们与其他正常工作的文件具有相同的所有者和模式。
-
您是否尝试过实际更改文件然后运行
git status? -
好的。 @Chronial 的建议有所帮助(谢谢!)。我对文件进行了更改并运行了“git status”。我看到“data/schema.sql”(小写“d”)列出了一个更改。 “git diff 5.0 data/schema.sql”甚至可以工作。但是该目录在我的本地文件系统中具有大写字母 D。所以问题似乎是这样的:git认为目录是小写的,我的文件系统认为它以大写开头。这是一个更加良性的问题 - 不过,我该如何解决呢?
-
是的,它是:)。将其设置为 false,则
git status应该说data已重命名为Data。也许还有其他一些人。您可以手动修复它或运行git reset --hard(但前提是您没有未提交的更改!)
标签: git version-control