【问题标题】:Very long-historied file in Git repo suddenly has blank log and is invisible to "git status"Git repo 中历史悠久的文件突然有空白日志并且对“git status”不可见
【发布时间】: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.excludesfilegit 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


【解决方案1】:

从您的 cmets 看来,这可能是大写/小写的问题。将 ignorecase 设置为 false 并手动修复名称或使用 git reset --hard 重置 repo(仅当您没有未提交的更改时)。

【讨论】:

    猜你喜欢
    • 2011-08-10
    • 2015-06-04
    • 2017-10-19
    • 2020-02-13
    • 2012-11-12
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 2013-01-20
    相关资源
    最近更新 更多