版本控制系统是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统主要有CVS、SVN和Git等,Git作为分布式版本控制系统,与集中化版本控制系统的不同是,客户端并不只提取最新版本的文件快照,而是把代码仓库完整镜像下来。任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。
- Git仓库管理工具
常用的Git仓库管理工具有:
- GitLab——Ruby开发
支持的Unix衍生版:Ubuntu、Debian、CentOS、Red Hat Enterprise Linux、Scientific Linux、Oracle Linux
Git不可运行在Windows操作系统上。
- Gitblit——Java开发
支持的操作系统:Windows、Linux、OSX
- Bitbucket——Scala开发
- Gitonomy——PHP开发
- Gogs——Go开发
支持所有平台,包括Linux、Mac OS X、Windows及ARM平台
- Git客户端工具
常用的Git客户端工具:
- Git Extensions ——C#开发
支持Windows资源管理器集成和VS集成
通过Mono支持多平台安装
- SourceTree
支持Windows和OS X
- TortoiseGit——C++开发
支持Windows平台
- JS Git——JavaScript开发
运行在任何可运行JavaScript的平台
- git-cola——Python开发
支持跨平台
- Git的三种状态
Git有三种状态:已提交(committed)、已修改(modified)和已暂存(staged)。已提交表示数据已经安全的保存在本地数据库中;已修改表示修改了文件,但还没保存到数据库中;已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。由此,Git项目有三个工作区:Git仓库、工作目录和暂存区域。
图1 Git三个工作区
- Git分支
有人把Git的分支模型称为它的“必杀技特性”。Git创建新分支的操作几乎是瞬间完成,并且在不同分支之间切换也一样便捷。Git首次提交产生的提交对象没有父对象,普通提交操作产生的对象有一个父对象,而由多个分支合并产生的提交对象有多个父对象。Git创建分支,只是为你创建了一个可以移动的新的指针。
图2 渐进稳定分支的流水线图
- Git钩子
Git能在特定的重要动作发生时触发自定义脚本。有两组钩子:客户端的和服务器端的,客户端钩子由诸如提交和合并这样的操作所调用,服务器端钩子作用于诸如接收被推送的提交这样的联网操作。钩子都被存储在Git目录下的hooks子目录中。
更多详细使用过程,请参考《Pro Git》。
参考文献:
- 12款各种编程语言实现的Git代码托管系统. oschina
- https://git-scm.com/book/zh/v2