Git执行git status耗时数分钟后提示‘not a git repository’求助
怪异Git仓库问题:
git status长时间运行后抛出仓库不存在错误 问题现象
执行git status时,命令会卡顿数分钟,随后抛出以下错误:
fatal: not a git repository (or any of the parent directories): .git
复现与排查过程
- 在独立目录克隆远程仓库,执行
git status显示nothing to commit,符合预期。 - 将原问题仓库中所有非隐藏文件(排除
.git等以.开头的文件)复制到新克隆的仓库中。 - 再次执行
git status,卡顿数分钟后仍抛出上述仓库不存在的错误:
% git status (...minutes pass...) fatal: not a git repository (or any of the parent directories): .git
目录完整性验证
执行ls -a确认.git目录存在:
% ls -a .dockerignore .DS_Store .git .gitignore .gitmodules .idea src Dockerfile Dockerfile.dev LICENSE.md README.md
重复测试:重新克隆仓库后git status正常,但复制非隐藏文件后问题复现。
补充排查回复
@evolutionxbox:.git是文件还是目录?你是否在.git目录内执行Git命令?
% ls .git FETCH_HEAD config hooks info objects HEAD description index logs refs
@Gimby:src目录中是否存在.git文件夹?一定有什么干扰了Git。
% find . -name '.gi*' ./src/.gitignore ./.gitmodules ./.gitignore ./.git ./.idea/.gitignore
解决方案建议
- 排查特殊文件/目录:Git执行
status时会遍历所有文件,若复制的文件中存在超大文件、循环符号链接或异常目录结构,可能导致遍历超时。可通过du -sh src/检查目录大小,用find . -type l -exec test -e {} \; -print排查循环链接。 - 修复.git目录权限:复制文件过程中可能意外修改
.git权限,执行以下命令修复:chmod -R 755 .git chmod 644 .git/* - 处理子模块冲突:仓库包含
.gitmodules,尝试初始化子模块后再测试:git submodule init git submodule update - 排除系统/IDE文件干扰:删除macOS的
.DS_Store或.idea配置目录后重试:rm .DS_Store rm -rf .idea git status
内容的提问来源于stack exchange,提问作者TheEnvironmentalist
相关产品推荐
相关产品推荐

