gpt4 book ai didi

git - 为什么 git log/status 不返回任何输出?

转载 作者:太空狗 更新时间:2023-10-29 13:20:51 25 4
gpt4 key购买 nike

我有一个非常旧的 git 存储库(大约六年前),我注意到我没有在我的 git status 输出中看到我对文件所做的更改。

我在有问题的特定文件上运行了命令:

$ git status Data/schema.sql
$

没有输出!这个文件从一开始就在 repo 中。此外,如果我将 repo check out 到另一个目录,该文件(很奇怪)会出现在那里。

我在 git diff Data/schema.sqlgit log Data/schema.sql 中看到了同样的情况。

通常情况下,当发生这种情况时,这是 gitignore 问题。但即使删除我的 .gitignore 文件也不会导致此行为发生任何变化。

什么会导致这种行为?

最佳答案

这个“症状”有两种可能的“诊断”:

历史上不区分大小写的强制重命名

诊断:

git ls-files

搜索不同大小写的路径:

some/path/foo
Some/path/bar

解决方案

git mv -f Some/path/* some/path/

重要的是将所有文件 ( /* ) 移动到重命名的路径。现在他们都将拥有一条路径。

可能的原因

可能会出现some/path有几个文件,在路径中用不同的字母大小写进行跟踪。对于这样的文件,提供了到 git log 的“不正确”路径或 git status导致日志输出中缺少某些提交。

此错误可通过 git mv -f <path/file> <PATH/file> 重现在 Git 1.9.5 上,也许在更新的版本上(稍后会检查)。

git log Some/path/foo

日志将包含在 git mv -f some/path/bar Some/path/bar 之前所做的一些提交被执行了。

标有 skip-worktree 的文件或 assume-unchanged bit

感谢@Zeeker 的假设。

诊断:

git ls-files -v | grep -E '^(S|[a-z])'

有关更多信息,请查看 git ls-files documentation .

关于git - 为什么 git log/status 不返回任何输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30768779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com