关于Git工具的深入思考

关于Git工具的深入思考

现在最流行的版本管理工具莫过于Git了,免费,开源,github/gitlab开源网站和工具的推动,让Git几乎席卷了所有的软件开发领域。除了一些传统的行业还在应用CVS/SVN,或者收费的ClearCase, Git几乎编程了记事本一样的常用工具。网上一搜可以搜到一大堆Git使用指导,Workflows,最权威的当属Git网站上的progit.pdf,除了英文版,还有其他很多语言的翻译版本,包括中文版。

对于一个初学者来说,掌握Git的一些常用命令并不难,但是如果想把Git用好却也不是一件容易的事情。这个过程中不仅仅要知道命令有哪些,常用参数有什么作用,还要适当了解Git实现的原理,进而熟练掌握Git工具的使用,提升自己的工作效率。所以Git是一个学习曲线比较陡峭的工具,当你翻越崇山峻岭之后,才有可能看到一片美丽的景色。工欲善其事必先利其器。

Git和以前的版本工具最大的不同我想就是对于分支的管理。从SVN, Clearcase用过来的人,很能体会分支的使用是有多么的麻烦。事实上这些工具新建一个分支不亚于重新创建一个代码库,因为他们的分支就是通过某些规则将主线映射或者拷贝一份。如果你需要将代码下载到本地,这意味着你将要下载主线和分支两份代码,而事实上这两部分代码有大量是重复的。有些好点的工具,针对分支上未修改的代码,当你更新的时候会将主线的代码更新先来;有些工具则完全是独立的两套代码,需要你手动去更新和合并。

Git则不然,它不论在服务器还是在本地,都指存储了一份代码和签名信息。当你切换分支的时候,你可以享受瞬间在分支工作的感觉,因为对于Git来说只是移动了一个指针,没有任何copy操作。你也不需要重新现在一份代码,你在新的分支修改完成之后还可以瞬间切换回前一个分支或者主线。当你拥有了这么轻量级的分支之后,代码修改和合入就变得异常简单和快捷。不论是git工具自身,还是使用pull request/merge request,你都可以可视化看到不同分支代码的修改,进而决定是继续修改还是合入修改。

Comments are closed.