Skip to content

理解 Git 基础和术语

介绍

Git 是一个分布式版本控制系统,用于在软件开发过程中跟踪源代码的变更。在深入实际使用 Git 之前,了解构成 Git 工作原理基础的基本概念和术语是至关重要的。

本教程将涵盖每个 Git 用户都应该理解的核心概念,为您提供有效使用 Git 的坚实基础。

什么是版本控制?

版本控制是一个记录文件随时间变化的系统,使您可以在以后调用特定版本。它允许您:

  • 跟踪代码变更
  • 与其他开发者协作
  • 在需要时恢复到之前的版本
  • 了解什么发生了变化,何时变化,以及谁做了这些变化
  • 同时维护项目的不同版本

Git 与其他版本控制系统

集中式 vs. 分布式

传统的版本控制系统(如 CVS、Subversion)是集中式的:

  • 单一中央服务器存储所有版本
  • 开发者从中央仓库检出文件
  • 如果服务器宕机,协作停止

Git 是分布式的:

  • 每个开发者都有项目历史的完整副本
  • 可以离线工作并稍后同步变更
  • 没有单点故障
  • 自然存在多个备份副本

Git 核心概念

仓库 (Repo)

仓库是存储项目的空间。它包含:

  • 所有项目文件
  • 完整的变更历史
  • 分支和标签
  • 配置设置

仓库类型:

  • 本地仓库:在您的计算机上
  • 远程仓库:在服务器上(如 GitHub、GitLab)

工作目录

工作目录是您当前在计算机上处理项目文件的文件夹。这是您编辑、创建和删除文件的地方。

暂存区 (索引)

暂存区是存储有关下一次提交内容信息的文件。它就像是您下一次提交的预览。

可以将其视为购物车:

  • 您将物品(变更)添加到购物车(暂存区)
  • 准备好后,您结账(提交)购物车中的所有内容

提交

提交是项目在特定时间点的快照。每个提交包含:

  • 唯一标识符(哈希值)
  • 作者信息
  • 时间戳
  • 描述变更的提交信息
  • 指向前一个提交的指针

分支

分支是指向特定提交的轻量级可移动指针。它允许您:

  • 同时处理不同的功能
  • 在不影响主代码库的情况下进行实验
  • 与他人在单独的功能上协作

默认分支通常称为 mainmaster

HEAD 是指向您当前工作的分支的指针。它告诉 Git 您当前正在查看哪个提交。

Git 工作流状态

Git 文件可以存在于三种主要状态:

1. 已修改

  • 文件已更改但尚未提交
  • 更改仅存在于您的工作目录中

2. 已暂存

  • 文件被标记为将进入下一次提交
  • 更改位于暂存区

3. 已提交

  • 文件安全地存储在您的本地仓库中
  • 更改成为项目历史的一部分

Git 的三个区域

理解这三个区域对于掌握 Git 至关重要:

工作目录 → 暂存区 → 仓库
  (修改)    (暂存)   (提交)

工作目录

  • 您编辑文件的地方
  • 包含项目的一个版本
  • 文件可以被修改、添加或删除

暂存区

  • 存储有关下一次提交内容的信息
  • 也称为"索引"
  • 允许您精确控制每次提交的内容

仓库

  • Git 存储元数据和对象数据库的地方
  • 包含项目的所有版本
  • 项目根目录中的 .git 文件夹

基本 Git 术语

克隆

在您的计算机上创建远程仓库的本地副本。

复刻

在像 GitHub 这样的托管服务上创建他人仓库的个人副本。

拉取

从远程仓库获取更改并将其合并到您当前的分支中。

推送

将您的本地提交上传到远程仓库。

合并

将不同分支的更改合并到单个分支中。

变基

将提交从一个分支移动或合并到另一个分支,创建线性历史。

标签

对特定提交的引用,通常用于标记发布点。

远程

托管在服务器上的仓库版本,用于协作。

Origin

您克隆的远程仓库的默认名称。

Upstream

您复刻的原始仓库(在基于复刻的工作流中)。

Git 对象类型

Git 在其数据库中将所有内容存储为对象:

1. Blob (二进制大对象)

  • 存储文件内容
  • 不包含文件名或目录结构

2. Tree

  • 表示目录
  • 包含对 blob 和其他 tree 的引用
  • 存储文件名和权限

3. Commit

  • 指向 tree 对象
  • 包含元数据(作者、时间戳、消息)
  • 引用父提交

4. Tag

  • 指向提交
  • 包含额外的元数据
  • 通常用于发布

常用 Git 命令概述

以下是最常用的 Git 命令及其用途:

仓库操作

  • git init - 初始化新仓库
  • git clone - 从远程复制仓库到本地
  • git status - 检查工作目录的状态

基本工作流

  • git add - 暂存更改以准备提交
  • git commit - 将更改保存到仓库
  • git push - 将更改上传到远程仓库
  • git pull - 从远程仓库下载更改

分支操作

  • git branch - 列出、创建或删除分支
  • git checkout - 切换分支或恢复文件
  • git merge - 将一个分支的更改合并到另一个分支

信息命令

  • git log - 查看提交历史
  • git diff - 显示提交、分支等之间的更改
  • git show - 显示有关提交的信息

理解 Git 的最佳实践

1. 以快照方式思考

Git 不存储差异;它在每次提交时存储整个项目的快照。

2. 提交成本低

不要害怕频繁提交。小而集中的提交更容易理解和管理。

3. 使用有意义的提交信息

编写清晰、描述性的提交信息,解释更改了什么以及为什么更改。

4. 理解三种状态

始终了解您的文件处于哪种状态:已修改、已暂存或已提交。

5. 尽早并经常使用分支

使用分支进行功能开发、实验和错误修复。它们是轻量级的,易于使用。

总结

理解 Git 的核心概念和术语对于有效的版本控制至关重要。关键要点:

  • Git 是分布式的:每个副本都是完整的仓库
  • 三种状态:已修改、已暂存、已提交
  • 三个区域:工作目录、暂存区、仓库
  • 提交是快照:不是差异,而是完整的项目状态
  • 分支是指针:指向提交的轻量级引用
  • HEAD 跟踪位置:显示您在项目历史中的位置

理解了这些基本概念后,您就可以开始有效地使用 Git 了。下一个教程将指导您创建第一个 Git 仓库并执行基本操作。

下一步

现在您已经了解了 Git 基础和术语,可以继续:

  1. 创建您的第一个 Git 仓库
  2. 基本 Git 工作流:添加、提交、推送
  3. 理解 Git 分支

相关资源