git-svn克隆后.git文件夹位置异常,如何调整至项目目录内?
SVN转Git迁移:调整.git目录位置的两种方案
一、直接克隆生成正确的目录结构
你的问题根源是git svn clone命令未正确指定SVN仓库的trunk路径,且目标目录参数的使用导致项目文件被放在额外子文件夹里。调整命令即可让.git直接位于项目文件同级:
正确克隆命令(包含所有需要的分支和trunk)
git svn clone \ --no-minimize-url \ --authors-file=../authors-transform.txt \ --trunk=APP/trunk \ --branches=APP/branches/dev \ --branches=APP/branches/uat \ https://the.org/svn/myProject \ myGitProject
- 必须明确指定
--trunk=APP/trunk:默认git-svn会找根目录下的trunk,你的SVN trunk在APP/trunk,不指定会导致结构错乱 - 同时列出所有需要迁移的分支(dev和uat),确保分支历史被完整迁移
- 执行后,
myGitProject目录内会同时包含.git文件夹和项目文件(如src),结构符合预期
分步克隆方式(更直观)
# 创建并进入目标目录 mkdir myGitProject && cd myGitProject # 克隆到当前目录(用.指定) git svn clone \ --no-minimize-url \ --authors-file=../authors-transform.txt \ --trunk=APP/trunk \ --branches=APP/branches/dev \ --branches=APP/branches/uat \ https://the.org/svn/myProject \ .
这种方式明确将仓库内容克隆到当前目录,避免路径歧义。
二、已克隆出错误结构后的调整步骤
如果已经生成了.git与MyProject同级的结构,可按以下步骤修正后再推送远程:
- 移动.git目录到项目文件夹内
# 假设当前在包含.git和MyProject的父目录 mv .git MyProject/
- 修复Git工作区关联
cd MyProject # 重置Git状态,让其重新识别当前目录的文件 git reset --hard
验证结构
执行ls -la,应能看到.git文件夹和项目文件(如src)处于同一目录下。推送至远程Git仓库
# 添加远程仓库地址 git remote add origin <你的远程Git仓库URL> # 推送所有分支和标签 git push -u origin --all git push -u origin --tags
注意事项
- 若SVN仓库存在tags目录,需在克隆命令中添加
--tags=APP/tags参数,确保标签历史也被迁移 - 迁移完成后,可删除原SVN克隆的临时文件,仅保留调整后的Git仓库
内容的提问来源于stack exchange,提问作者Neill
相关产品推荐
相关产品推荐

