前言
没有要排除任何工具的意思,只是眼下最流行的“版本管理系统”非GIT莫属。
写给新手
有些朋友可能会说我还没有使用过GIT,好吧,我不说你OUT了,只是在开始之前你应该简单了解下GIT。这里有个图文生动的好地方,有兴趣不妨来看一看----git - 简易指南
Git有什么不一样
如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征。
- SVN属于中心式的仓库管理,统一维护在Server端,而Git属于分布式的仓库管理,每个开发者都拥有自己的本地仓库,并且每个仓库都是平等的。
- 由于你自己本身就拥有仓库,那么Git在本地磁盘上就保存着所有有关当前项目的历史更新,并且Git中的绝大多数操作都只需要访问本地文件和资源,不用连网,所以处理起来速度飞快。用SVN的话,没有网络或者断开VPN你就无法做任何事情。但用Git的话,就算你在飞机或者火车上,都可以非常愉快地频繁提交更新,等到了有网络的时候再上传到远程的镜像仓库。换作其他版本控制系统,这么做几乎不可能,抑或是非常麻烦。
- 并且Git中每个克隆(clone)的版本库都是平等的。你可以从任何一个版本库的克隆来创建属于你自己的版本库,同时你的版本库也可以作为源提供给他人,只要你愿意。
- Svn?Svn是统一管理的好吧。开发时你的Boss说了算,说什么时候提交代码就什么时候提交代码,说什么时候更新就统一更新,你觉得很爽?
- Git?Git的提交不会被打断,直到你的工作完全满意了,PUSH给他人或者他人PULL你的版本库,合并会发生在PULL和PUSH过程中,不能自动解决的冲突会提示您手工完成。
现在你知道有什么样的区别了把,奥斯托洛夫斯基曾经说过:“统一是扼杀创造力的根源”!(好吧,我杜撰的...)难怪这么多开源社区(比如OSC@China)都采用了Git,而不是... ...
我最讨厌SVN的两个地方
如果在公司规定就使用SVN(多数不是规定,而是确实不了解Git)那么我就很反感一下两点:
- SVN有点考验手速,谁提交的快就不需要解决冲突。这个有点烦人,大家明明在同一个Team中,有了冲突应该协调去解决,而不是最后那个“手速”慢的同学去独自跟冲突干上一仗。
- SVN对于文件更改记录的管理。每个文件夹下都有那么一个.svn的文件夹确实很不爽,你去管理你的东西,干嘛在我的开发环境下放上你的东西,不爽!
Git的GUI工具
不得不说的是很多朋友都有GUI偏好,或者说一个好的工具怎能没有一个好的“脸”呢?!好吧,这是Windows习惯的驱使,我只能说非所有程序猿都愿意使用命令行工具,尤其是被Windows惯坏了的那批。不得不说的是Git有自己的GUI界面,因此完全不需要其他的GUI工具。不过话又说回来,工具都有个习惯问题。基本上从SVN转换过来的程序猿,绝大多数都只用过TortoisSVN,好吧那你还用TortoisGit吧。
不过你可能不明白的是TortoiseGit没有集成Git,那么还需要去下载msysGit(或者Git for windows)来安装。因为TortoiseGit其实只是一个壳(其实和Svn一样),它需要调用Git命令行才能发挥作用。(现在你知道我为什么推荐你用命令行了么?)
TortoiseGit安装好是这个样子的:
还有就是另外一个GUI工具叫做SourceTree,个人感觉还是非常不错的,界面如下:
Git for windows 和 msysGit
这个你大致了解下就行,只是多一种选择,多一条路。msysGit的主页提供了两个项目:Git for Windows和msysGit,并写明了它们的详细区别。
个人认为,Git for Windows适合绝大多数程序猿(又见绝大多数),所以,强烈建议安装Git for Window。
msysGit使用一种很BT也很NB的方式来安装。先安装一个最小的MinGW/MSYS系统,然后使用git pull 所有的源码,调用gcc在本地编译成可执行文件。
啰啰嗦嗦说了这么多,可能没有给大家在实际开发中帮上什么忙,Git的使用过程还需要大家自己去摸索。