* 检出一个已存在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 commit命令提交更改,使用git svn rebase命令同步远程svn服务器的更改,以及使用git svn dcommit命令推送更改到远程svn服务器。 总之,git-svn是一个将Git的灵活性与SVN...
基本用法执行摘要: > cd path/to/svn/repo> gitify init执行本地更改并将它们提交到 git。 准备好推送您的更改时: > gitify push要使用上游更改更新您的工作目录: > gitify updategitify 会注意保持 git 和 svn ...
### Git与SVN的核心区别 #### 版本控制模型的不同 - **SVN**:集中式版本控制系统。所有的数据(包括文件版本、日志、差异等)都存储在一个中心服务器上,用户通过客户端软件与该服务器进行交互。这种方式下,每一...
为了更好地利用Git,开发者还需要了解一些高级用法,如子模块(用于管理项目的依赖),重置和变基操作(用于调整提交历史),以及钩子脚本(用于自定义Git的行为)。同时,配合图形化工具如SourceTree、GitKraken或...
介绍是TFS(Team Foundation Server)和git之间的双向桥梁,类似于git-svn。 它将TFS提交提取到git存储库中,并允许您将更新推回TFS。 。 请参阅以了解详细信息并下载。 如果遇到问题,请查看页面。 在这样做之前,...
Git是世界上最流行的分布式版本控制系统,...以上是关于Git客户端安装包Git-1.9.5的一些基本信息和使用方法,希望对你有所帮助。在实际工作中,掌握Git的这些基本操作和概念,能够有效地管理代码版本,提高开发效率。
本文主要探讨了两种广泛使用的版本控制工具——Git 和 SVN,并提供了使用 Git-SVN 的方法来结合两者的优点。 一、Git 与 SVN 对比 Git 是一种分布式版本控制系统,而 SVN(Subversion)则是集中式系统。Git 的核心...
本文将详细讲解两种广泛使用的版本控制系统:SVN(Subversion)和Git,并提供它们的软件包下载与安装步骤。 首先,让我们了解SVN。SVN是Apache软件基金会的一个项目,它的全称为Subversion,主要用于集中式版本控制...
本文将深入探讨TortoiseSVN的核心功能和使用方法,以及它在版本控制领域的价值。 一、Subversion基础 Subversion是一款开源的集中式版本控制系统,用于管理文件和目录的历史版本。它允许用户跟踪项目中文件的修改...
Git 到 wordpress 插件 svn pusher 轻松地将您的 wordpress 插件从 git repo 推送到 svn。 记住readme.txt和your_plugin.php ##用法 1.Clone this project 2.Clone your plugin git repo into `/git` folder 3...
在IT行业中,版本控制系统是开发团队协作的重要工具,其中Subversion(简称SVN)是一种广泛应用的集中式版本控制系统。"kill-svn-folders"是一个针对SVN用户的小工具...理解其工作原理和使用方法是确保数据安全的关键。
CC-GIT-VSS-CVS代码管理工具说明书”,以及其描述和部分内容,深入探讨几种主流代码管理工具——Subversion (SVN),ClearCase,Concurrent Versions System (CVS),Git,和Visual SourceSafe (VSS)的使用方法,特别...
Git的诞生源于对传统集中式版本控制系统(如CVS和SVN)的不满。林纳斯·托瓦兹在2005年开发Git,目标是提高代码的版本管理和协作效率。Git具有以下显著特点: - 分布式:每个开发者的本地工作目录就是一个完整的...
Git和Subversion(SVN)是两种广泛使用的版本控制系统,各有其优势。本篇文章将深入探讨如何在Linux环境中实现Git仓库与SVN的零配置同步,以优化WordPress插件的发布流程。 首先,我们需要了解Git和SVN的基本概念。...
git2svn提供git到svn的单向同步,基于代码,但做了一些改进,支持更多参数,bash同步脚本使用方法: ./git2svn.sh [-r git_revision] [-t type] [-u svn_user] [-p svn_password] [-l locale] <local> 其中:type参数...
Eclipse 是一个强大的开源集成开发环境(IDE),广泛用于Java应用程序的开发,但它也支持其他编程语言通过安装相应的插件。...熟悉并掌握其使用方法,对于任何使用Eclipse进行开发的团队都至关重要。
这种方法可以充分利用Git的灵活性和SVN的集中管理。 **知识点总结** 1. **SVN基础**:集中式版本控制系统,所有版本信息存储在中央服务器。 2. **Git基础**:分布式版本控制系统,每个开发者本地都有完整代码库副本...
安装Subclipse的最好方法是使用Eclipse Update Manager。在Eclipse 3.x中,它位于Help -> Software Updates -> Find and Install...菜单下。 选择搜索要安装的新功能部件,点击新建远程站点,弹出图1,在URl输入框...
本说明书旨在详细介绍在Eclipse集成开发环境中使用多种代码管理工具,包括Subversion (SVN)、ClearCase (CC)、Concurrent Versions System (CVS)、Git以及Visual SourceSafe (VSS)的方法与技巧。我们将重点阐述SVN的...