如何一起使用 Git 和 SVN

      如何一起使用 Git 和 SVN无评论

最近总听到关于Git的事情。在了解了一些文档、教程、手册之后,我觉得Git确实很有用,特别是你有大量时间花费在离线编码上(我就是这样)。

这是一份简单的帮助,告诉你如何使用git来工作在用svn进行版本控制的项目上(例如KDE仓库的代码)。

益处何在?

由于Git是一个分布式版本控制系统(svn是集中式的),你可以在本地工作目录进行提交、创建分支、合并,无需连接到互联网。

下次你在线时,可以把你的改动“push” 到中心svn服务器上。

操作步骤:

你需要:

  1. 安装 git 和 git-svn
  2. 创建工作目录:mkdir strigi
  3. 初始化git工作目录:cd strigi && git-svn init https://svn.kde.org/home/kde/trunk/kdesupport/strigigit-svn init 命令跟着svn仓库的地址 (这里我们指向strigi的仓库)
  4. 找到项目的某个提交 (你可以通过 cia版本控制 去获得). 警告: 命令git-log 会从这个版本开始显示项目的版本历史。
  5. 执行命令git-svn fetch -rREVISION,REVISION 就是刚才获得的那个版本号。
  6. 更新工作目录:git-svn rebase,现在你就可以在这个项目中使用git作为版本控制了。

要保持工作目录更新,可以执行:

git-svn rebase

你可以用下面的命令将更改提交到svn服务器:

git-svn dcommit

通过这种方式,所有的git提交都会“转换”成相应的svn命令。

解决git-svn rebase的问题

在加入新东西之前,你也许会在同步主开发树的时候体验到一些问题。实际上,你在执行git-svn rebase之前还必须提交所有的本地修改(使用git-commit命令)。

有时候这并不合理,因为你的更改也许还没有准备好提交(还没有完成、测试或者验证这写代码)。不过别担心,git对此也有一个官方的解决方案,只需下面的步骤:

  1. 先把你的改动保存起来,使用命令:git-stash
  2. 更新工作副本,使用命令:git-svn rebase,这跟平时一样
  3. 恢复保存起来的改动,使用命令:git-stash apply
  4. 清除“保存”,使用命令:git-stash clear。第1步之后,所有未提交的改动在工作副本上都看不到了,因而你可以执行rebase命令,不会有任何问题。

参考git-stash帮助获得更多信息。

发表评论

电子邮件地址不会被公开。 必填项已用*标注