likes
comments
collection
share

[Git介绍]软件开发过程中,是如何协作管理代码的?

作者站长头像
站长
· 阅读数 4

本节课主要介绍了Git是什么,以及什么是分布式版本管理系统

为什么要代码管理

软件是如何开发出来的,大家都有了解吧。软件是由程序员通过代码开发出来的。一个软件足够复杂的时候,代码量就会特别大。这个时候就不会由一名程序员来独自开发,需要多名程序员之间的配合来开发完成。

这个时候,多名程序员之间的代码如何管理就十分重要。Git就是用来解决这个问题的。像程序员经常访问的github.com就是通过Git来做代码提交和合并的。类似的网站还有gitlab.com,gitee.com等。

那么Git是什么呢?从定义上来说,Git是一个分布式版本管理系统(Distributed Version Control System - DVCS)。这里面有两个关键词:一个是版本管理,一个是分布式。

版本管理系统

前面说到软件开发过程中,代码需要被管理。最开始的代码管理系统,就是普通的版本管理系统,比如SVN。这类系统的特征有以下三个特点。

版本管理

首先,它需要能进行代码的版本管理。每一次的代码改动,包括增加,修改,删除,文件移动,都需要被记录下来。而且能记录代码修改的原因以及每一次提交的顺序。 其次,需要支持代码的回滚,如果发现代码改错了,可以指定回滚到某次修改。 最后,能比对代码变化。对历史的代码变动,能进行检查。

主动提交

和普通word文档自动保存不同,代码的提交,需要程序员主动提交。因为一个功能的开发,经常会花很长时间,修改很多文件。如果是自动保存,自动提交,会出现保存的代码功能只修改了一半的情况,代码的版本管理就无章可循。 如果是主动提交,那么程序员需要保证每一次提交,都是一个相对完整的功能修改,并对这次改动做功能描述说明。 这样子,代码版本管理中的代码回滚,代码对比,都可以根据改动说明进行选择。

多人协作

最后就是多人协作。代码开发过程难免会涉及到多位程序员。多位程序员间的代码需要同步,这个时候就会有一个中央仓库的概念。

[Git介绍]软件开发过程中,是如何协作管理代码的?

如图所示。程序员提交代码和拉取最新代码都是通过中央仓库来完成的,程序员之间是不会直接相互传递代码的

这个时候,程序员间的协作过程就是:

  1. 项目的主工程师,在本地创建好项目架构。在公司服务器上创建好中央仓库,把本地创建好的项目架构代码,提交到中央仓库。
  2. 项目其他程序员,从中央仓库拉取代码。
  3. 项目组所有程序员,在本地开发,并提交代码到中央仓库,并拉取最新代码。每次有人提交代码到中央仓库,所有程序员都要重新拉取最新代码,在本地解决冲突。

[Git介绍]软件开发过程中,是如何协作管理代码的?

分布式版本管理系统

这里以Git为例。分布式就是相对前面介绍的版本管理系统,在每一位程序员本地多了一个仓库。

[Git介绍]软件开发过程中,是如何协作管理代码的?

如图所示。 每一位程序员的本地都有一个本地仓库。程序员修改完代码会先将代码提交到本地仓库。等时机合适,再把本地仓库的代码push远程仓库。这样就解决了,普通版本管理系统中,每一次提交代码都要通知别人去做代码合并的情况。 可以看出来,分布式就是把代码的提交和上传分开来了,这样设计所带来的优势是:

  1. 大多数的操作可以在本地进行,所以速度更快,而且由于无需联网,所以即使不在公司甚至没有在联网,你也可以提交代码、查看历史。从而极大地减小了开发者的网络条件和物理位置的限制(例如,你可以在飞机上提交代码、切换分支);
  2. 由于可以提交到本地,所以你可以分步提交代码,把代码提交做得更细,而不是一个提交包含很多代码,难以 review 也难以回溯。

当然分布式也有缺点:

  1. 由于每一个机器都有完整的本地仓库,所以初次获取项目的时候会比较耗时,因为需要拉取仓库完整的历史,对于一些长期维护的大项目,会拉取很长时间。
  2. 本地存储占用的空间大。由于Git每一个提交存储的都是文件,所以,仓库的存储空间占用相对多很多,如果公司项目仓库很多,会很快把你的硬盘空间占满。

总结

本节课我们了解了Git是什么,以及他有什么优势劣势。下节课我们讲讲如何安装、配置、以及快速使用Git。

转载自:https://juejin.cn/post/7205151554995175485
评论
请登录