SVN项目迁移到Git方法

SVN项目迁移到Git方法

参考文章

https://mp.weixin.qq.com/s/qULuhEf6G6-NtzIuZBi6aA

其余参考网址:

idea整合svn

https://blog.csdn.net/shaoming314/article/details/128919671

目录

Git和SVN差异环境准备 Git安装、配置项目迁移 1. 将源SVN库转换到Git本地仓库 2. 添加Git远程库地址 3. 推送代码到Git常见错误

Git和SVN差异

Git是一个开源的分布式版本控制系统,由Linux之父Linus Torvalds于2005年开发,而SVN是一个集中式的版本控制系统。

SVN项目迁移到Git方法_第1张图片

Git和SVN的主要区别如下表:

Git SVN
Git是分布式的 SVN是集中式的
Git支持离线操作,有本地的版本控制 SVN必须联网操作,只有服务器上的版本控制
上传下载速度快 上传下载速度慢
Git功能多,命令较多,有更多的概念和命令。 与git相比,SVN操作更简单。
开启分支方便、速度快 svn的分支是一个目录,拉分支较慢

以上是它们的主要差异,下面介绍如何将已有的SVN仓库迁移到空的Git仓库,另外,本文Git服务器使用Gerrit搭建。

环境准备

Git安装、配置

Git安装配置方法可参考Git简易教程-安装及简单使用

项目迁移

1. 将源SVN库转换到Git本地仓库

使用git-svn将源Subversion库转换为本地Git存储库。

$ git svn clone https://192.168.100.21/svn/zentao

SVN项目迁移到Git方法_第2张图片

如果SVN项目有忽略文件,执行如下命令转换SVN:ignore属性为 .gitignore文件。

git svn show-ignore > .gitignore
git add .gitignore
git commit -m 'Convert svn:ignore properties to .gitignore.'

SVN项目迁移到Git方法_第3张图片

如果clone完成后,SVN仓库还有更新,可执行以下命令同步SVN更新:

$ git svn rebase

2. 添加Git远程库地址

$ git remote add origin "ssh://[email protected]:29418/zentaopms"

$ git remote show origin
* remote origin
  Fetch URL: ssh://[email protected]:29418/zentaopms
  Push  URL: ssh://[email protected]:29418/zentaopms
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (up to date)

3. 推送代码到Git

$ git push origin master:master --force
Enumerating objects: 2324, done.
Counting objects: 100% (2324/2324), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2307/2307), done.
Writing objects: 100% (2324/2324), 3.50 MiB | 1.25 MiB/s, done.
Total 2324 (delta 691), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (691/691)
remote: Processing changes: refs: 1, done
To ssh://[email protected]:29418/zentaopms
 + eef598e...07c6319 master -> master (forced update)

常见错误

推送代码报如下错误:

$ git push origin master:master --force
Enumerating objects: 2324, done.
Counting objects: 100% (2324/2324), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2307/2307), done.
Writing objects: 100% (2324/2324), 3.50 MiB | 1.32 MiB/s, done.
Total 2324 (delta 692), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (692/692)
remote: Processing changes: refs: 1, done
To ssh://172.16.30.72:29418/Laboratory_asset_management
 ! [remote rejected] master -> master (failed to lock)
error: failed to push some refs to 'ssh://[email protected]:29418/zentaopms'

原因是当前用户没有push权限,到gerrit添加push 权限即可。

你可能感兴趣的:(运维,git,svn,github)