跳转到内容

版本控制基础:Git 是什么

版本控制系统(Version Control System,VCS)用来记录一份文件集合随时间发生的每一次变化,并且允许在任意历史版本之间自由查看和切换。Git 是目前使用最广泛的版本控制工具,理解它的基本模型,是后续所有 Git 操作命令的前提。

早期的版本控制工具(如 SVN)采用集中式模型:存在一个唯一的中央服务器保存完整的历史记录,每个开发者本地只保留当前签出的某个版本,几乎所有操作(提交、查看历史)都需要联网访问中央服务器。

Git 采用分布式模型:每次把仓库克隆到本地,拿到的都是包含完整历史记录的一份完整副本,而不是某个版本的片段。这意味着提交、查看历史、创建分支这些操作都可以在完全离线的情况下完成,只有在需要与其他人同步变更时(推送、拉取),才需要联网访问远程仓库。

Git 管理下的一个项目,文件实际上处在三个不同的区域之间流转:

  • 工作区(Working Directory) 当前能直接看到、编辑的文件
  • 暂存区(Staging Area / Index) 已标记、准备好要被下一次提交记录的改动
  • 仓库(Repository) 已经正式提交、成为历史记录一部分的改动

一次改动要真正被 Git 记录下来,需要经过“修改工作区文件 → 用 git add 加入暂存区 → 用 git commit 从暂存区写入仓库”这三步。暂存区的存在,让开发者可以在一次提交中精确挑选要包含哪些改动,而不是被迫把当前工作区的全部改动一次性打包提交。

每次执行 git commit,Git 会把当前暂存区的内容打包成一个提交对象(Commit),记录这次改动的完整快照、提交信息、作者、时间戳,以及指向上一个提交的引用。这条引用链把所有提交串成一条历史记录,是 Git 能够回溯任意历史版本的基础。

每个提交都有一个基于其内容计算出的唯一哈希值(如 a3f5c9e),这个哈希值本身就是该提交的身份标识——只要内容不同,哈希值就必然不同,这也是 Git 判断两个提交是否指向同一份内容的依据。

Debian 系发行版下安装 Git:

Terminal window
sudo apt install git

安装完成后,首次使用前需要配置身份信息,这些信息会被记录进之后每一次提交:

Terminal window
git config --global user.name "Your Name"
git config --global user.email "you@example.com"

--global 表示这项配置对本机所有 Git 仓库生效;省略这个参数则只对当前所在的仓库生效,适合需要针对不同项目使用不同身份信息的场景。

这个主题是构建可靠 Linux 开发流程的重要组成部分。对它有清晰的理解,会让后续任务变得更容易,因为你能更快地判断某一步是否缺失或使用不当。

  • 在安全的测试环境中尝试这里展示的命令和配置。
  • 比较这些概念在不同发行版或工具之间的适用差异。
  • 记下一次实践中哪些步骤成功,哪些失败,这样下次遇到问题时更容易定位。
  • 将这篇文章与系列中相关内容结合起来,加深整体理解。
  • 跳过验证步骤,默认系统已经配置正确。
  • 不对命令中的路径、软件包名称或工具版本进行适配,直接复制粘贴执行。
  • 把这个主题当成孤立的技巧,而不是整个开发流程的一部分。