Git clone操作卡住后checkout提示非Git仓库报错咨询
Git Clone完成后提示非仓库、checkout分支匹配失败问题排查
异常执行日志
$ git clone https://github.com/ashishpawar517/AutoCompiler Cloning into 'AutoCompiler'... remote: Enumerating objects: 351, done. remote: Counting objects: 100% (170/170), done. remote: Compressing objects: 100% (91/91), done. Receiving objects: 86% (302/3remote: Total 351 (delta 42), reused 149 (delta 31), pack-reused 181 Receiving objects: 100% (351/351), 1.29 MiB | 1.33 MiB/s, done. Resolving deltas: 100% (139/139), done. $ git checkout new_update fatal: not a git repository (or any of the parent directories): .git $ git init Initialized empty Git repository in C:/Users/foo/gitfolder/__testbase/.git/ $ git checkout new_update error: pathspec 'new_update' did not match any file(s) known to git
问题成因
- 核心问题是未进入clone生成的仓库目录:执行
git clone <仓库地址>时,Git默认会在当前命令执行路径下创建和仓库同名的子目录(本次就是AutoCompiler文件夹),所有仓库文件、版本记录对应的.git隐藏目录都存放在这个子目录内。clone完成后直接在父目录执行Git命令,父目录本身不存在Git仓库标识,自然触发「not a git repository」报错。 - 后续
git init属于误操作:在无仓库的父目录执行初始化后,会生成一个完全空白、无任何提交记录、无任何远程分支关联的全新空仓库,这个空仓库里根本没有new_update分支的相关数据,必然报pathspec匹配失败的错误。 - 日志中86%进度处的输出错乱是终端换行显示bug,从后续100%接收对象、完成增量解析的输出可以判断,clone全流程已经正常跑完,不存在clone卡住的问题。
解决步骤
- 先清理父目录下误生成的空仓库:在当前命令所在的
C:/Users/foo/gitfolder/__testbase/路径下,删除隐藏的.git文件夹即可。使用Git Bash可执行rm -rf .git,使用Windows CMD可执行rd /s /q .git。 - 进入clone自动生成的仓库目录:执行
cd AutoCompiler - 进入目录后即可正常执行Git操作,直接运行
git checkout new_update就能切换到目标分支。如果不确定分支名是否正确,可以先执行git branch -a查看所有拉取到的本地、远程分支列表,确认分支名存在后再切换。
极小概率下如果发现
AutoCompiler目录不存在(属于clone最后阶段写文件异常中断的特殊情况),直接清理当前路径下的残留文件,重新执行clone命令即可,clone完成后务必先进入对应子目录再做后续操作。
内容的提问来源于stack exchange,提问作者a0poster
相关产品推荐
相关产品推荐

