修复SVN转Git后呈现类裸仓库结构的非裸Git仓库
修复Git仓库结构:将根目录下的Git核心文件移至.git文件夹
这种情况我之前也碰到过,SVN转Git的时候偶尔会出现这种“伪裸仓库”的问题——Git的核心文件直接暴露在根目录,而不是藏在.git文件夹里。别担心,几步就能搞定:
步骤1:备份Git核心文件(重要!)
先别急着动手,先把这些Git相关的文件备份一份,避免操作失误丢数据。在仓库根目录执行:
# 把Git核心文件备份到临时目录 mkdir -p /tmp/git-repo-backup cp -r branches hooks info logs objects refs config description HEAD index /tmp/git-repo-backup/
步骤2:创建.git文件夹并移动核心文件
在仓库根目录创建标准的.git文件夹,然后把所有Git核心文件/目录移进去:
# 创建.git目录 mkdir .git # 移动所有Git相关的文件和文件夹到.git里 mv branches hooks info logs objects refs config description HEAD index .git/
步骤3:将仓库从“裸仓库”模式切换为正常工作仓库
因为当前的结构是裸仓库的结构,Git默认会标记它为裸仓库,我们需要修改配置让它变成正常的非裸仓库:
git config --local core.bare false
步骤4:恢复工作区文件
现在仓库已经是正常结构了,但根目录还没有项目文件(因为之前是裸仓库状态),执行下面的命令把当前分支的文件checkout到工作区:
git checkout HEAD
验证修复结果
做完上面的步骤后,你可以执行几个命令确认一下:
ls -la:应该能看到项目文件和.git文件夹git status:正常显示工作区状态git log:确认提交记录和标签都还在
如果一切正常,那你的Git仓库就恢复成标准结构啦!
内容的提问来源于stack exchange,提问作者Idris.AH
相关产品推荐
相关产品推荐

