从现有Git仓库创建新仓库后续:裸仓库无源码且git status报错
问题根源:你创建的是裸仓库,它本身就没有工作树
这是个很常见的裸仓库认知误区,我来给你拆解清楚:你用git --bare init创建的是Git的裸仓库——这类仓库的设计目的是作为团队共享的远程中心仓库,它只存储Git的版本控制元数据(就是普通仓库里.git文件夹里的内容),没有对应的工作目录(也就是你要找的源码文件存放的地方)。
这就是为什么会出现你遇到的两个问题:
- 看不到任何源码文件:因为裸仓库根本不保存文件的实际内容副本,只存版本记录
- 执行
git status报错:git status是用来检查工作目录和暂存区状态的命令,裸仓库没有工作树,自然无法执行这个操作
解决方法:克隆裸仓库到本地获取工作树
要查看和使用新仓库的源码,你需要把这个裸仓库克隆到本地的非裸仓库中:
- 在本地任意目录下执行克隆命令:
git clone ssh://my_host/new_repo
执行完这个命令后,本地会生成一个new_repo文件夹,里面就是完整的工作目录,包含所有源码文件,你可以正常运行git status、修改文件等操作。
- (可选)如果已经有本地空仓库,也可以添加远程并拉取:
cd /path/to/your/local/workspace git init git remote add origin ssh://my_host/new_repo git pull origin master
验证推送是否成功(可选)
如果你想确认之前的推送确实生效了,可以在裸仓库所在的服务器上执行以下命令查看分支和提交记录:
# 查看所有分支 git branch -a # 查看master分支的提交历史 git log master
如果能看到你推送的topic1分支的提交记录,说明推送是完全成功的,只是裸仓库不展示文件而已。
内容的提问来源于stack exchange,提问作者slcasner
相关产品推荐
相关产品推荐

