1.5 Git代码管理
Git作为版本控制工具,最早被用于Linux的内核开发。与CVS、Subversion或者Perforce等集中式版本控制工具不同,Git采用了分布式的版本控制系统,即不需要服务器端的软件,就可以进行版本控制。
在Git中,绝大多数的操作都只需要访问本地文件和资源,而不需要外连到服务器去获取版本的历史。Git只需直接从本地数据库中读取相关的历史版本,进行差异计算。例如,如果想查看当前的代码版本与一周前的代码版本之间所引入的全部修改,Git会查找到一周前的文件做一次本地的差异计算,而不是由远程服务器处理或从远程服务器拉回旧的版本文件,再交给本地进行处理。
这也意味着当处在网络离线状态时,仍然可以进行几乎任何Git操作;直到有网络连接时再上传。相比之下,用Perforce的话,没有连接服务器时几乎不能做什么事;而用Subversion和CVS的话,也许能修改文件,但不能向数据库提交修改,就是因为本地数据库离线了。
Git分布式版本控制系统的出现,也彻底颠覆了原有代码管理的组织模式。一旦使用Git,我们便不再依赖唯一的、集中式的版本库。Git让每个开发者本地都拥有一份完整的本地版本库,这份本地版本库来自GitHub或者Gitee托管的共享版本库。
使用Git做版本控制,可以让核心开发团队与共享版本库之间不必一直保持连接状态,类似查看日志、提交、创建分支等操作都可以脱离网络在本地的版本库中完成。作为非核心成员的项目贡献者,也可以修改其本地版本库;但是,如果想要将自己的改进合入共享项目,让更多同一个项目的开发者受益,那么,贡献者需要将自己对项目的改进被核心开发团队所了解,并且被接纳。
上述特性使得Git对源代码的发布和交流极其方便。这对于诸如Linux内核这样的大型项目来说固然很重要,但是现在许许多多的项目版本管理都开始使用Git。原本Git只适用于Linux/UNIX平台,现如今已经可以在Windows、macOS,以及Linux内核的多种操作系统中得以广泛使用。