* 检出一个已存在svn repository(类似于svn checkout)
我们可以通过git-svn clone命令完成这个操作: git-svn clone your_svn_repository_url
* 从中心服务器的svn repository获取最新更新
这个操作可以通过"git-svn rebase"完成。注意这里用的是rebase,而不是update。update命令对于通过git-svn检出的svn repostory的git版本库是不可用的。
* 查看提交历史日志
这个简单,使用"git-svn log",加上-v选项,还可以提供每次commit操作涉及的相关文件的详细信息。
* 将本地代码同步到Svn服务器
完成这一操作需要通过"git-svn dcommit"命令。这个命令会将你在本地使用git commit提交到本地代码库的所有更改逐一提交到svn库中。加上-n选项,则该命令不会真正执行commit到svn的操作,而是会显示会有哪些本地变动将被commit到svn服务器。git-svn dcommit似乎不能单独提交某个本地版本的修改,而是一次批量提交所有与svn中心版本库的差异。
下面是一个git-svn的一般使用流程:
1、git-svn clone your_svn_repository;
2、修改本地代码,使用git add/commit将修改提交到本地git库;
3、定期使用git-svn rebase获取中心svn repository的更新;
4、使用git-svn dcommit命令将本地git库的修改同步到中心svn库。
使用git-svn处理代码冲突的步骤有些繁琐,不过瑕不掩瑜吧。这里用一个小例子来说明一下。
假设某svn中心库上的某个项目foo中只有一个源码文件foo.c:
* 我在使用git-svn clone检出版本时,foo.c当时只有一个commit版本信息:"svn v1";
* clone出来后,我在本地git库中修改foo.c,并通过git commit提交到本地git库中,版本为"git v1";
* 不过与此同时另外一个同事也在修改foo.c这个文件,并已经将他的修改提交到了svn库中,版本为"svn v2";
* 此时我使用git-svn dcommit尝试提交我的改动,git-svn提示我:
Committing to svn://10.10.1.1:80/foo ...
M foo.c
事务过时: 过期: ”foo/foo.c“在事务“260-1” at /usr/lib/git-core/git-svn line 570
* 使用git-svn rebase获取svn服务器上的最新foo.c,导致与foo.c冲突,不过此时svn版本信息已经添加到本地git库中(通过git log可以查看),git-svn rebase提示你在解决foo.c的冲突后,运行git rebase --continue完成rebase操作;
* 打开foo.c,修改代码,解决冲突;
* 执行git rebase --continue,git提示我:
You must edit all merge conflicts and then
mark them as resolved using git add
* 执行git add foo.c,告知git已完成冲突解决;
* 再次执行git rebase --continue,提示"Applying: git v1",此时"git v1"版本又一次成功加入本地版本库,你可通过git log查看;
* 执行git-svn dcommit将foo.c的改动同步到svn中心库,到此算是完成一次冲突解决。
分享到:
相关推荐
git-svn是Git版本控制系统与Subversion(SVN)版本控制系统的桥梁,允许Git用户与SVN仓库进行交互。在一些项目中,由于历史原因可能仍在使用SVN作为中央版本控制系统,而git-svn可以使得开发者在本地使用Git的强大...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
本项目为码云git-svn-fast-import工具的改进设计源码,采用C语言进行核心开发,同时包含Shell脚本和Python辅助脚本,总计39个文件,其中C源文件13个,头文件10个,Shell脚本6个。此外,还包含构建配置文件、版本控制...
git-as-svn 是 Git 仓库的 SVN 前端,你可以使用 SVN 协议来访问 Git 仓库 标签:gitassvn
dvcs-ripper-master-git-svn-cvs
### Git与SVN的核心区别 #### 版本控制模型的不同 - **SVN**:集中式版本控制系统。所有的数据(包括文件版本、日志、差异等)都存储在一个中心服务器上,用户通过客户端软件与该服务器进行交互。这种方式下,每一...
git-svn-helpers 是一个命令行工具的集合,它极大地简化了 git for svn 存储库的使用。 它的主要目标是在现有的 svn checkout 之后设置一个本地 git 存储库,“无需动脑筋”。 它还解决了使用单个 git-svn 存储库...
具体到描述中提到的"svn版本控制工具",这可能是指像`git-svn`这样的工具,它是一个Git子命令,允许用户在本地使用Git的同时与远程的SVN服务器进行通信。通过`git-svn`,开发者可以将Git的分支管理和本地版本控制...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
Git是世界上最流行的分布式版本控制系统,尤其在开源社区和软件开发领域广泛应用。这个离线安装包,`git-1.8.3.1-32.el7-8x86-64`,针对的是Linux系统,特别是那些无法连接到互联网或者网络环境不稳定的情况。它包含...
1 安装GIT 代码如下:$ sudo aptitude install git$ sudo aptitude install git-doc git-svn git-email git-gui gitk git软件包包含了大部分Git命令,是必装的软件包,第二行命令也是Git软件包,但是是单独发布的,...
介绍是TFS(Team Foundation Server)和git之间的双向桥梁,类似于git-svn。 它将TFS提交提取到git存储库中,并允许您将更新推回TFS。 。 请参阅以了解详细信息并下载。 如果遇到问题,请查看页面。 在这样做之前,...
综上所述,通过配置git-svn、git、svn、github,可以构建一个强大的开发环境,实现SVN和Git的无缝结合,有效弥补SVN在使用中的不足。在具体的工作流程中,如需以SVN库为基础进行开发,可以先克隆SVN库到本地Git库,...
Git 和 SVN 是两种广泛使用的版本控制系统,它们在软件开发中起着至关重要的作用,帮助团队协同工作并跟踪代码的历史变化。Git 是一个分布式版本控制系统,而 SVN(Subversion)是集中式版本控制系统。以下是关于 ...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
在本文中,我们将深入探讨Git的核心概念、主要功能以及与Subversion(svn)的对比。 Git的起源可以追溯到Linux内核开发,由Linus Torvalds创建,目的是为了提高源代码管理的效率。Git的核心特性包括: 1. 分布式:...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
在安装过程中,"TortoiseSVN-1.11.0.28416-x64-svn-1.11.0.msi" 文件是 TortoiseSVN 的安装程序,用于在 Windows 64 位系统上安装 SVN 客户端。"TortoiseGit-2.8.0.0-64bit.msi" 文件则是 TortoiseGit 的安装程序,...