当我在我的仓库上运行git status时,我得到了 fatal: Not a git repository: /my repo/.git/modules/docs
我已经检查过.git并且包含具有适当权限的HEAD.我可以运行各种其他命令.如果我运行git gui它打开正常并将列出一些已更改的文件,但是缺少很多文件.
我猜测HEAD可能存在某种腐败现象,但不确定.知道如何在不消除整个回购的情况下解决这个问题吗?
更新:我意识到我已经更改了repo目录的名称.错误中引用的目录是目录的旧名称.所以我目前的回购是在,/new dir/.git
但错误是说Not a git repository: /old dir/.git/modules/docs
.也许git很困惑?
ax0*_*03d 83
这两个文件包含绝对子模块路径:
{submodule}/.git
.git/modules/{submodule}/config
Run Code Online (Sandbox Code Playgroud)
因此,如果您移动了repo,则这两个文件中的绝对路径无效,并导致'not a git repository'错误.只需手动修复这些文件.
我终于解决了这个问题是由于其中一个子模块的问题.只需重命名repo目录就会导致与该子模块发生冲突.看到如何重命名带子模块的git存储库后的讨论?我意识到克隆repo是一种更好的方法,而不是重命名目录,并解决了子模块的问题.
我通过重置所有git-submodules解决了这个问题
rm -rf .git/modules
git submodule update --init
Run Code Online (Sandbox Code Playgroud)