Logo
Section 1 / 5

什么是源代码控制?

了解“源代码控制”及其用途。

导入

什么是源代码控制?

了解“源代码控制”及其用途。

版本控制

如果你不熟悉版本控制,它解决的是一个简单的问题:你和同事如何跟踪代码库中的变更?

  • 互相发送更新后的文件
  • 文件变更时通过邮件通知对方
  • 在中心位置保存带版本号的压缩包
追踪文件变更
追踪文件变更

然而,当项目规模扩大时,你会遇到以下问题:

  • 开发者越多,协调所有变更带来的沟通成本就越高。
  • 如果多个项目同时在同一个代码库上运行,追踪所有变更将变得复杂。
  • 如果多个开发者同时修改同一文件,就需要某种机制来协调这些变更。
...
开发者之间的协作

版本控制工具就是用来管理这种复杂性的系统。

它是一个记录文件及其状态历史的数据库。就像使用数据库一样,你需要掌握必要的技能才能有效使用,并从中获得最大收益。

我年纪够大,还记得有人抱怨使用版本控制的时代!如今,项目中不使用版本控制几乎已经闻所未闻(尽管仍偶有发生)。

Git 出现之前的生活

在 Git 存在之前,存在一些(可称为)传统的版本控制工具。

传统版本控制

传统的版本控制工具,如 CVS(并发版本系统)和 SVN(Subversion),采用集中式架构。你通过与一个服务器通信来维护源代码的状态。这可能带来几个问题:

  • 版本控制数据库可能变得非常庞大
  • 历史记录可能变得杂乱无章
  • 管理代码的检出操作可能变得复杂且痛苦

在旧时代,当你“检出”源代码时,那只是对中央版本的一个次优副本。

从用户角度看,代码处于两种状态之一:

  • 本地更改(“脏”状态)
  • 已提交

“已提交”等同于“推送到服务器”。只有当你提交并推送后,你的本地更改才能被他人共享。

Git

相比之下,Git 是一种根本意义上的分布式系统。每个 Git 仓库都是从另一个仓库完整复制而来的。它不是指向服务器的“链接”,也不是其他仓库的“影子副本”。 你可以引用原始仓库,但并非必须如此。所有代码数据库(无论是 Git、CVS 还是 SVN)都被称为 **仓库**。

Git 标志
Git 标志

请记住这一点,因为它会反复出现:

所有 Git 仓库天生平等!

Git 的设计初衷是为了让全球各地的开发者能够离线协作开发 Linux 内核。因此,不存在一个持有“黄金源码”的中央服务器。相反,每个人维护自己的源代码数据库(即自己的仓库),并通过合并、复制和集成与其他仓库协作。

林纳斯·托瓦兹(Git 和 Linux 的创造者)喜欢开玩笑说,他把互联网当成了自己的备份系统。

简介

Git 内容的四个阶段