svn 代码导入到 git 操作指引
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了svn 代码导入到 git 操作指引相关的知识,希望对你有一定的参考价值。
针对 svn 代码导入到 git 操作指引
背景说明
需要导到 git 的代码在 svn 上有 trunk 和 branch 两条线。导入到 git 时 ,我们采用的方案是 将 trunk 上的代码作为 master ,将 branch 上的代码作为 develop
实例说明,本文档基于 ios 代码迁移实例 ,操作时注意替换相应的地址
本文主线仓库(trunk) 地址:svn://192.168.230.119/kds/code/mobilestock/client/apple/trunk/KDS_Phone
本文分支仓库(branch)地址:svn://192.168.230.119/kds/code/mobilestock/client/apple/branches/kds/branch-feature-june-milestone/KDS_phone
在 develop 分支上需要保留 branch 上的 log,不能只是一个合并提交。
具体操作步骤
从 SVN clone trunk 和 branch 代码到本地
clone 主线仓库:git svn clone --no-metadata --authors-file=/Users/zl/工作目录/Git/svn-user-info.txt svn://192.168.230.119/kds/code/mobilestock/client/apple/trunk
clone 分支仓库:git svn clone --no-metadata --authors-file=/Users/zl/工作目录/Git/svn-user-info.txt svn://192.168.230.119/kds/code/mobilestock/client/apple/branches/kds/branch-feature-june-milestone
命令说明
clone 命令:git svn clone --no-metadata --authors-file=user.txt $path
$path 是指 svn 代码路径
user.txt 是用户名和邮箱匹配表,可以从如下地址获得:http://gitlab.inin88.com/snippets/1
在 trunk 目录下执行:git remote add remote-branch ../branch-feature-june-milestone ( ../branch-feature-june-milestone 是指前面 clone 获得的 branch 代码目录)
执行:git checkout -b branch-init
执行 git log 查看提交,找到最早的由 scm 新建分支所提交产生的版本号:858f79c343a36cc6f30dcaae2501047908eeb039 (此处的版本号是指由scm 所提交的新建分支的提交版本号,注意,scm 可能有多个提交,一般会新建目录,再把代码导入到分支,所以,这个版本号一般会在该分支上的第一个或第二个 log 中出现,判断标准时,改 log 的后面一个是有开发人员提交的)
执行 git reset --hard 858f79c343a36cc6f30dcaae2501047908eeb039 (此处是为了保证 该分支只剩下由 scm 所产生的所有提交,不能包含任何开发人员的提交,也不能遗漏 scm 所做的提交)
执行 git log 查看日志,是否只剩余新建分支的日志。
执行:git fetch remote-branch , 将 remote-branch ( ../branch-feature-june-milestone )中的代码同步到 trunk 目录下
执行 git checkout remote-branch/master 切换到 remote-branch/master 分支。
执行 git rebase --onto master remote-branch/branch remote-branch/master
如果执行上述命令过程中出现冲突过,先解决冲突,执行 git add 然后执行 git rebase --continue 继续rebase 的动作。
rebase 完成后 执行 git checkout -b develop
执行 git remote add origin [email protected]:lin.zhou/mobile-stock-zxjt-iOS.git (此处 地址需要更改为 自己需要迁移到的地址)
git checkout master
git push origin master:master 将 trunk 代码推送到 master
git checkout develop
git push origin develop:develop 将 branch 代码推送到 develop
以上是关于svn 代码导入到 git 操作指引的主要内容,如果未能解决你的问题,请参考以下文章