从SVN迁移到GIT并保留所有的提交记录

早期某些项目使用的SVN,目前都使用的是GIT,那么如何将SVN的项目迁移到GIT并保留之前提交的记录呢

一:创建用户映射文件

创建一个用户映射文件userinfo.txt,将项目中所有提交的SVN用户和GIT用户对应起来

复制代码
SVN用户名1 = GIT用户名1<邮箱>
SVN用户名2 = GIT用户名2<邮箱>

如果上面的文件中有用户缺失,后面的 SVN 命令将会停止。不过你可以更新用户映射然后接着再来(类似断点续传)。

二:SVN迁移至GIT

1:拉取代码

从SVN仓库拉取所有数据

复制代码
git svn clone SVN仓库地址 --stdlayout --no-metadata -A userinfo.txt project(拉取的数据存储目录)

这个命令将会在 `project` 新建一个 Git repo,并开始从 SVN 中拉取代码。请注意 "`--stdlayout`" 参数表示你的项目在 SVN 中是常见的 "`trunk/branches/tags`" 目录结构,如果不是,那你需要使用 `--tags`, `--branches`, `--trunk` 参数(请通过 `git svn help` 自行了解)。

SVN仓库地址一些常见协议都是支持的 : `svn://`, `http://`, `https://`。注意这个 URL 应该指向项目的 base repository,例如 `http://svn.mycompany.com/myrepo/repository\`。 不要指到了 `/trunk`, `/tag` 或 `/branches` 里。

2:异常处理

如果出现用户名没找到,更新你的 `userinfo.txt` 文件,然后

复制代码
cd project
git svn fetch

如果你的项目非常大,你可能需要重复上面的git svn fetch命令好几次,直到所有的 SVN commit 都被抓下来了

三:推送至GIT远程仓库

复制代码
git remote add origin GIT仓库地址
git push -u origin master

四:参考地址

将代码库从 SVN 迁移至 Git 并保留所有 commit 记录 -- 尘埃落定

相关推荐
胖大和尚14 小时前
git本地实现local->remote推送
git
BerryS3N15 小时前
Code Git 工作树:多分支开发的痛点与工作树的曙光
大数据·git·elasticsearch
lbb 小魔仙18 小时前
Git + Python 项目工作流最佳实践:pre-commit、CI、CHANGELOG 自动化
git·python·ci/cd
Xu_youyaxianshen1 天前
Git 零基础常用指令手册(Gitee / GitHub 通用 )
git·gitee·github
John_ToDebug1 天前
Git Stash 完全指南:临时保存工作区的艺术
人工智能·git·agent
是宇写的啊1 天前
Git远程操作
git
our_times2 天前
# Git 高频命令实战指南:从日常开发到进阶协作
git
PBitW2 天前
git 中容易遗忘的点 (二) ⚡⚡⚡
前端·git·面试
PBitW2 天前
git 中容易遗忘的点 (三) 🚀🚀🚀
前端·git·面试
郑州光合科技余经理2 天前
家政预约小程序后端源码深度剖析:支付回调实战
java·开发语言·前端·git·小程序·架构·php