Windows环境下从SVN迁移至Git并推送到GitHub的问题
一、解决git svn clone仅生成.git文件夹的问题
1. 核对SVN仓库结构与命令参数匹配度
你使用的git svn clone https://svn.aaaaa.bbb/c -T trunk -b branches -t tags是针对标准SVN三目录结构(trunk/branches/tags)的命令,但目标仓库可能不符合这个约定:
- 先用TortoiseSVN浏览
https://svn.aaaaa.bbb/c,确认顶级目录是否存在trunk、branches、tags; - 如果目录名不符(比如用
main代替trunk,分支存放在dev_branches),修改命令对应参数,例如-T main -b dev_branches -t release_tags; - 若仓库无标准分支/标签目录,直接执行
git svn clone https://svn.aaaaa.bbb/c尝试克隆。
2. 验证SVN权限与网络连通性
- 在Git Bash中执行
svn info https://svn.aaaaa.bbb/c,若提示认证失败,先通过TortoiseSVN访问仓库完成账号密码验证(Windows下TortoiseSVN会缓存凭据,git svn会复用该缓存);若提示网络错误,检查代理、防火墙设置; - 若仓库需特定SSL证书,先通过TortoiseSVN接受证书,确保Git能正常访问。
3. 查看详细日志定位问题
重新执行克隆命令时添加--verbose参数,输出详细过程:
git svn clone https://svn.aaaaa.bbb/c -T trunk -b branches -t tags --verbose
从日志里排查具体失败原因,比如找不到trunk目录、权限不足、历史版本过大导致中断等。
4. 尝试分步克隆
若仓库历史版本过多,一次性克隆失败,可指定起始版本分段克隆:
git svn clone https://svn.aaaaa.bbb/c -T trunk -b branches -t tags -r 1000:HEAD
将1000替换为实际起始版本号,完成后再用git svn fetch拉取更早的历史。
二、迁移后推送到GitHub的最佳方式
1. 基础准备
先在GitHub创建空仓库(不要勾选初始化README、.gitignore等选项),然后在本地仓库添加远程地址:
git remote add origin https://github.com/你的用户名/你的仓库名.git
2. 完整推送所有内容
git push -u origin master仅能推送master分支,要完整保留所有版本历史、分支和标签,需执行:
- 推送所有分支:
git push origin --all
- 推送所有标签:
git push origin --tags
后续可以用git push -u origin master设置默认推送分支,但这一步仅为方便后续操作,不是必须的。
3. 验证完整性
推送完成后登录GitHub仓库,检查:
Commits页所有SVN历史是否导入;Branches页是否同步所有分支;Releases页(对应标签)是否存在所有迁移的标签。
内容的提问来源于stack exchange,提问作者User 19826
相关产品推荐
相关产品推荐

