概述
Git是一个免费且开源的发布版本控制系统,使用它可以快速有效地控制大小项目的一切。它的性能远远超过其他的源码管理工具(SCM tools)如Subversion,CVS,Perforce,ClearCase。拥有开销小的本地分支、便利的staging区、多工作流等等特性。
主要特性
1. 分支与合并
Git可以让你在本地创建多个相互独立的分支,分支的创建、合并和删除操作都非常快。当你要推送代码到远程仓库时,你可以选择只推送部分分支而不是全部。这意味着:
- 无阻力上下文切换。你想要尝试一个想法所以创建了一个分支,并进行了几次提交;你切换回原来的分支,打补丁,再切换到你正在实验的这个分支,将它们合并。
- 基于角色的编程线路。你可以使用一个分支只包含生产代码,另外一个分支用于测试,另外更多分支用于日常开发。
- 基于特性的工作流。创建新分支用于新特性的开发,然后再合并到主分支。
- 一次性实验。创建一个分支去实验,如果不可行就直接删掉它。
其他系统也有各自实现这些的方式,但是使用流程会比较复杂且容易出错。而Git非常简单。
2. 小而快
Git只有在执行初始clone操作时比较缓慢。因为Git会下载整个历史而不仅仅是最新版本。
3. 分布式
Git是分布式的。这意味着你将clone整个仓库,而不仅仅是checkout源码当前的tip。
- 多备份。就算你使用的是一个中心式的工作流,每个用户都有一个main server的完整备份。每一份拷贝都可以在crash或corruption事件发生时,推送到远端替换main server。
- 任何工作流。Git分布式与强大分支系统的特性使得无数的工作流得以轻松实现。
- SVN风格工作流。中心式工作流。
- 整合管理工作流。仅一个人负责提交代码到终极仓库。开发者们从该仓库clone代码,开发后推送到各自的独立仓库,然后让整合者拉取这些改动。这种方式常见于开源/GitHub仓库。
- 独裁与陆军中尉工作流。dictator负责最终提交,lieutenants负责整合部分开发改动,然后通知dictator。
4. 数据保证
Git使用的数据模型确保了您的项目每一个bit的密码完整性。每一个文件和提交都被计算校验和,并且在checkout返回的时候可以通过该校验和取回。
5. Staging
不像其他系统,Git拥有staging area。这是一个可以格式化提交以及在完成提交前review的中间区域。这使得你不必提交所有改动的文件。
6. 免费且开源
Git是在GNU General Public License version 2.0开源协议下发布的。Git项目选择使用GPLv2保证你分享和修改自由软件的自由——保证该软件对所有用户都是免费的。