技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 其他 --> 为何改用Git

为何改用Git

浏览:3898次  出处信息

Subversion 用得好好的,为什么要改用 Git 呢?

记得刚开始用 Subversion 时,它在 Windows 平台上的工具也还不是那么方便,光是安装就要手动设定一堆东西。现在,Subversion 服务已经几乎是点下一步、下一步的方式就能安装完成了,非常方便。而且,现有的软件项目、写作等工作,也都在是用 Subversion 来管理版本。在已经投资不少学习成本、且用得很习惯的情况下,要换另外一套版本管理系统总是会有一些阻力。

更顺畅的工作流程

其实我 lag 很久了。没有改用 Git,主要就是因为习惯问题,以及考虑到已经付出的学习成本,和没有一个让我觉得非换不可的理由。但是最近由于经常使用笔记本电脑,而且网络经常碰到无法连线的状态(有时候是笔电所在的环境无法连网,有时候是服务器离线),以至于有些本机的修改成果无法立即 commit 成一个修订版次。这个时候,如果我还要继续修改别的东西(例如,修正另一个  bug),往往就会跟刚才的修改混在一起 commit,而且是要等到可连上网络时才能 commit。这样的时间差,很容易造成一些遗漏或混乱,无形中就增加了成本和风险。我希望就算无法连接服务器,还是能够依目前的进度先 commit,并且继续做后续的修改,这样我就不用在那里空等,也不用担心自己等到网络可连线时,已经忘记那些档案的 commit 先后次序。Git 可以做到这点。

快速

Git 之所以反应迅速,主要是因为分散式架构的缘故。在此架构下,版本库的完整历史全都在本机上。因此,就算要进行历史版本比对,也都是在本机进行,速度当然比需要实时连线的 VCS 来得快。

版本库毁损的风险较低

同样是基于分散式架构的缘故,Git 的版本库会在各用户端机器上存在多个完整的复本,因此就算服务器上的版本库损坏了,还是可以利用其他用户端机器的复本轻易复原,大幅降低版本库备份的成本和档案遗失的风险。

弹性的本地分支

在使用 Subversion 时,分支其实就是把档案复制到另一个文件夹,然后在不同的分支(文件夹)之间切换。在试过 Subversion 的分支之后,我还是有怕怕的感觉,因而倾向尽量少用。因为我觉得自己有一天一定会不小心把分支和主线给弄混了,以至于出现版本错乱的情形。

我还没有实验 Git 的分支功能,但从现有的一些技术文件看来,Git 分支的一个主要优点,就是它可以完全在本机进行。比如说,你可以在本机建立几个实验性质的分支,等到你觉得时机成熟了,便可以将特定分支推送至主机,分享给别人。或者,有些实验失败的分支,也可以直接在本机砍掉,而其他开发人员根本不知道曾经有这些分支。

其他优点

个人是觉得 Git 还有一个小地方比 Subversion 好:它的版本库目录结构。

当我从远端 Subversion 服务器 checkout 一个版本库到本机时,在本机的工作目录下,每一层子目录都会有一个 .svn 的资料夹,作为版本控制之用。Git 不是这样。当我从远端服务器 clone 一个 Git 版本库到本机时,就只有该版本库复本的根目录底下会有一个 .git 目录,其他子目录则很「干净」。此外,它的档案忽略清单只要由 .git 目录下的一个名为 .gitignore 的档案就能完全控制。虽然是不太起眼的差异,我却觉得蛮好的。大概是有点洁癖的缘故吧 XD

原文需要翻墙,哎

http://huan-lin.blogspot.com/2011/05/why-git.html

建议继续学习:

  1. Git常用命令备忘    (阅读:53138)
  2. Git log diff config高级进阶    (阅读:23686)
  3. Git subtree 要不要使用 –squash 参数    (阅读:22224)
  4. 我的git笔记    (阅读:18746)
  5. Zend Studio集成Git使用    (阅读:7967)
  6. 最近总结的一些技巧(vim,python,svn,fiddler等)    (阅读:7048)
  7. Git commit 注释格式    (阅读:5665)
  8. SVN Hook造成SVN提交速度慢的问题    (阅读:5217)
  9. GIT和SVN之间的五个基本区别    (阅读:4863)
  10. 利用tortoiseSVN在两个版本库间merge code    (阅读:4062)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1