以前自己一个人写代码和做项目,很少有想到要使用专门的版本控制工具来帮助自己进行项目代码的管理和版本控制,直到最近,要同时操作的项目很多,而且已经厌倦了以前的备份方式,这几天花了些时间来学习使用 Git 进行版本控制,真是受益良多,非常推荐大家学习使用。
我们先来说说不使用版本控制系统的时候,我们在操作一个项目的时候常常会遇到的情况和解决办法:
- 花了无数时间和心血写的东西由于各种原因(误删、硬盘损坏、自己不小心把代码弄乱等等)被毁灭了,导致所有的工作都白费。
- 每次想到要备份的时候都是复制整个项目文件夹到另一个地方,或者整个项目操作下来根本没有想过要备份。
- 每次想要测试新功能的时候,总是先复制一份现有的项目(或者新建一个工程),进行测试开发后,确定可行再移植到正式的项目中。
- 写着写着代码突然很想回到以前的某个状态,却怎么也回不去了。
- 其他各种和备份、测试、代码历史版本相关的所有烦恼。
如果上面说的地方你不幸中招了,那你真的很有必要来学习一下使用 Git 进行版本管理。
关于版本控制管理
什么是版本控制?我们为什么要关心它?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。对于程序员来说,我们更关注对保存着软件源代码的文本文件作版本控制管理,但实际上,你可以对任何类型的文件进行版本控制。
使用版本控制我们可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。我们可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。但额外增加的工作量却微乎其微。版本控制是程序员的福音和利器。
为什么选择 Git
用于版本控制的方法工具和软件很多,常见的许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别,这也是一种版本控制和管理的办法,是一种本地版本控制系统。
随着时间、技术和需求的发展,慢慢发展了集中化的版本控制系统,这类系统,诸如 CVS,Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
但是这种集中化的版本控制系统也有很大的缺点,于是分布式版本控制系统( Distributed Version Control System,简称 DVCS )面世了。在这类系统中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。
Git 作为分布式版本控制系统之一,有着诸多的优点和庞大的用户群体,包括大名鼎鼎的 GitHub 也是一个使用 Git 版本控制系统项目的共享虚拟主机服务。全球数以亿计的用户证明了 Git 的优越和强大。
Git 学习策略
首先要明确一点,真正强大的工具总是兼具易用的特点,Git 也不例外。学习 Git 并不难,一般来说半天到一天的时间够你深刻理解加完全掌握了。下面是我推荐的学习资料和方法:
1、有选择的通读一遍 The entire Pro Git book(http://git-scm.com/book/zh)。什么叫做 “有选择的通读”,就是根据自己的需要来阅读本书,感觉自己用不到的地方(如 4. 服务器上的 Git 等)直接跳过去。通过阅读这本书的目的是对 Git 有一个基本的了解。
2、精读 Git 使用指南(http://blog.csdn.net/zhu_xun/article/details/17220663),我认为这是网上为数不多的对加深 Git 的理解和使用有非常大帮助的文章,特别是对团队协同开发和分支管理讲得比较容易理解。
3、再看看 Git 简易指南(http://rogerdudler.github.io/git-guide/index.zh.html),对使用 Git 进行版本控制管理的整体流程顺一遍。
一般来说执行了前面三步之后,你已经可以使用 Git 来进行版本控制与管理了,不过这个时候,你可能还会有疑惑和疑问,特别是对于某些命令可能还有疑问,对于远程 Git 也还有不懂的地方,你可以尽管留着这些疑问,慢慢在使用中来解惑,也可以继续执行下面的步骤。
4、精读图解 Git(http://marklodato.github.io/visual-git-guide/index-zh-cn.html),加深对常用的命令的理解。
5、回过头来精读 The entire Pro Git book(http://git-scm.com/book/zh),温故而知新。
6、如果你有时间,可以照着 Git Immersion(http://gitimmersion.googol.im/index.html)将 Git 常用命令实践一次。
到这里,无疑你已经成为 Git 大师了,以后再也不愁版本控制、丢失代码和备份的问题了!
Git 相关资源推荐
1、GitHub(https://github.com/)
全球最受欢迎没,使用最广泛的代码托管库,无数开源作者在上面建立公开项目,很多著名项目托管其上。
2、BitBucket(https://bitbucket.org/)
BitBucket 是一家源代码托管网站,采用 Mercurial 和 Git 作为分布式版本控制系统,同时提供商业计划和免费账户。这是个人托管私人项目的较好选择。
3、国内的 GitCafe(https://gitcafe.com/)和 OsChina 的 Git 托管(http://git.oschina.net/)也是很不错的选择。