在SVN仓库上使用Git

最近在使用Git,切身体会到了Git在分支管理、离线开发的优越性,它可以在本地仓库为不同的任务创建不同的分支。

当你的仓库是SVN类型的,如果你想在本地使用Git进行版本控制,你可以使用git-svn。

安装git

如果没有安装git,可以从
http://git-scm.com/downloads下载安装。

git安装的时候会附带git-svn(建议安装最新版本)。

git-svn简单使用

1、克隆一个SVN仓库(相当于svn checkout)

git svn clone http://svn.example.com/project/trunk

2、进入到新克隆的目录下

cd trunk

3、当前所在的分支为master,可以使用git branch校验

git branch

4、在本地做修改,并提交到本地Git仓库

git add、git commit ……

5、更新SVN仓库(相当于svn update)

git svn rebase

6、提交修改到SVN仓库(相当于svn commit)

git svn dcommit

查看git-svn帮助文档

想要了解更多关于git-svn的使用,可以通过以下几种方式查看git-svn帮助文档:

  • git svn --help
  • git svn help
  • git help svn
  • git --help svn

或者可以查看
官网提供的帮助文档

使用SourceTree

SourceTree 是 Windows 和 OS X 下免费的 Git 和 Hg 客户端。

经验证,SourceTree支持将SVN仓库克隆为Git仓库以及其他可以使用git-svn命令行进行的操作。

遇到的问题

git svn can‘t authenticate on svn:// repository

使用git svn clone -s svn://git.oschina.net/donhui/md-doc-with-pic时,报如下错误:

Authorization failed: Cannot negotiate authentication mechanism at /usr/lib/perl5/site_perl/Git/SVN.pm line 310

所使用的git的版本为:git version 1.9.5.
msysgit.1

通过aol.com搜索,找到如下页面:

http://comments.gmane.org/gmane.comp.version-control.msysgit/17865

页面中有如下片段,从而得知这是个issue,而使用http(s)协议的svn仓库则正常:

This issue exists on several versions of msysgit, including latest 1.8.0-preview20121022 and 1.8.1-preview20130110.

Cygwin‘s version of git can fetch from this.

参考:

http://git-scm.com/docs/git-svn/1.8.5

http://blog.chinaunix.net/uid-11639156-id-3077471.html

http://www.oschina.net/translate/howto_use_git_with_svn

时间: 2024-10-13 07:05:39

在SVN仓库上使用Git的相关文章

centos7上使用git命令把代码放到github上

首先,在github上注册账号并创建好一个仓库:在centos上安装好git命令,细节不做过多说明,不懂的可以百度了. 回到centgos系统命令行: $ ssh-keygen -t rsa -C "[email protected]" 后面的[email protected]改为你在github上注册的邮箱,之后会要求确认路径和输入密码,使用默认的一路回车就行. 打开/.ssh/id_rsa.pub,复制里面的内容到github页面中的个人主页-->setting-->s

如何将SVN仓库转换为Git仓库

按如下步骤操作就可以将SVN仓库完整的转换为Git仓库: 1) 将远程SVN仓库搬到本地(这一步主要是为了提高转换的速度,也可以忽略) 参考这篇文章: http://rongjih.blog.163.com/blog/static/335744612010620105546475/ 这里假设最终要转换的SVN仓库为file:///tmp/test-svn 2) 使用git svn clone命令开始转换 $ git svn clone http://demo.democmp.com:81/svn

[git] [已解决] 在windows系统上使用msysgit / git / tortoisegit,访问git协议的仓库时。git push会卡住没反应。

发现按照git push 卡住去google,能搜到不少之前同行发的blog有提到,但貌似没有解决的.这个问题在msysgit的最新版已经解决了,希望这个solution扩散出去.让更多的程序猿同学看到. ===================== 啊啊啊,研究了两天,终于找到solution了..先仰天长啸一会儿 ===================== 项目组使用的server挂掉了,硬盘损毁,svn等好多内容不再可用,恢复无望. 虽然我们的代码之前并未怎么在上面放,但是前车之鉴,这个时候

本地Git仓库和远程仓库的创建和关联及github上传(git push)时出现error: src refspec master does not match any解决办法

github上传项目方法: 在你的电脑上装好git Git Bash Here 本地Git仓库和远程仓库的创建及关联大致流程是: 1.初始化这个本地的文件夹为一个Git可以管理的仓库 git init 注意:Git会自动为我们创建唯一一个master分支我们能够发现在当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了. 2.将本地的仓库和远程的仓库进行关联 git remote add origin [em

git将仓库上传到github的最简单的方法

初始化本地git仓库 最开始在本地写好程序,在根目录用git init命令会创建一个空的repository 然后执行git add . 会将本地所有程序先加入到一个暂存区 执行git commit 将暂存区的文件加入到repository 此时把整个项目都删掉都行,因为在.git文件中还有一个存好的副本. 在github上创建仓库 此时是不知道要把本地仓库上传到哪个github仓库的,因此 第一步进入github上的仓库列表 点击NEW 创建好仓库后进入相应的仓库 点击clone按钮出现一个U

Git同步更新操作GitHub和码云仓库上面的代码

一.前言 问题: 小编在生活中,一般都是将代码保存到github上,但由于国内的码云仓库确实速度比github快很多,用起来也很方便,于是后来就慢慢转码云了,当然小编在github上的代码也不想放弃更新,于是有没有方法可以让我们可以同步更新这两个git远程仓库呢?? 答案: 办法肯定是有的,下面我们就来实际进行操作一下吧 ~ 二.同步更新操作GitHub和码云仓库代码 即提交代码时,github仓库和码云仓库上的代码都同步更新提交上去了,而不需要分开去进行两次提交 ~ (1)将github和码云

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/

Android studio share项目到svn仓库

我们有新的项目要进行开发了,一直想用用android studio.所以在新项目上,果断使用.这里是我将android studio项目share到svn仓库的全过程.后期再考虑是否要搭建公司的git服务器.一步步来吧. 1.设置svn的客户端路径:(我的本地svn客户端是之前就已经安装好了,所以这里面是默认的状态) (这一步非常是必须的一步骤,否则,后续再share项目的时候就会报错,share项目到服务器仓库不成功) 报错:如果是直接按照这个默认的去share项目的话,会报错. annot

如何在服务器上搭建git服务器

参考文章: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000 http://wlog.cn/soft/git-ssh-server-for-debian.html 在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就