Git实践 | 青训营

38 阅读3分钟

Git是什么

Git是一种高效、快速的分布式版本控制工具。

版本控制

版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。
通过使用版本控制系统,我们可以更好地关注变更,了解到每个版本的改动是什么,方便对改动的代码进行检查,预防事故的发生;
同时,可以保存不同版本的信息,能够随时切换到不同的版本,回滚误删误改的问题代码。

版本控制类型代表性工具解决的问题
本地版本控制RCS本地代码的版本控制
集中式版本控制SVN提供一个远端服务器维护代码版本,本地不保存代码版本,解决了多人协作问题
分布式版本控制Git每个仓库都记录版本历史,解决了只有一个服务器来维护代码版本的问题

本地版本控制

使用文件夹的不同命名来区分版本,完成版本控制。
根据这个思想,开发了一些本地的版本控制软件,其中最流行的是RCS。
RCS在本地保存所有变更的补丁集,里面存储了所有文件版本之间的差异信息。通过这些补丁,可以计算出每个版本的实际文件内容,是一种增量式的版本控制。
但是,本地版本控制只能在本地使用,无法进行团队协作,如果通过传输文件的形式进行远程合作,操作复杂且无法保证一致性,因此在此基础上衍生出了集中式版本控制。

集中式版本控制

为了解决团队协作问题,集中式版本控制提供一个服务器保存所有文件内容,所有用户的提交都提交到此远端服务器中,每次都通过增量的方式保存文件的差异内容,如果提交和现存的文件内容发生冲突,需要在本地解决冲突后再提交。
集中式版本控制的代表工具是SVN,现在仍在大量使用。

集中式版本控制的优点是:

  • 操作方便
  • 支持二进制文件,支持大文件

集中式版本控制的缺点是:

  • 本地不存储版本控制,若要进行版本迭代都需要在连接服务器的前提下进行
  • 对分支的支持不够好,大型项目的维护困难
  • 本地没有版本的备份,服务端故障容易导致代码丢失

分布式版本控制

为了解决只有服务器上维护版本,在分布式版本控制中每个仓库都保存完整的提交历史,可以在本地进行代码提交,并且每次提交的不是文件的差异内容,而是完整的文件内容,同时提供了Push等操作完成本地和远端代码的同步。

分布式版本控制的优点是:

  • 每个仓库都是完整的,可以在本地进行版本控制
  • 对分支的支持强大,方便团队协作开发
  • 提供校验和相关机制保证完整性,不容易导致代码丢失

分布式版本控制的缺点是:

  • 命令较复杂,使用较难上手
  • 对于大文件的支持不够好