---
url: https://www.lingpapl.cn/study/git.md
description: Git 系统化学习笔记，覆盖基础命令、分支合并、远程协作与工作流规范。
---

# Git

#### 欢迎开启 Git 系统化学习之旅

**学习目标：** 熟练应用掌握完成团队代码协作

**我们将正式进入** **Git 从入门到实践** **的系统化学习。作为所有编程开发者的必备技能，掌握 Git 将帮助你实现以下目标：**

* **构建协作体系**：帮助团队和个人建立完整的代码协作管理平台，了解主流开源项目的代码管理与协作模式。
* **掌握发布标准**：具备独立完成项目发布的能力，并建立起标准化的工程体系。
* **无缝衔接职场**：在企业日常开发中，Git 是代码管理与团队协作的核心工具。提前熟悉并做到“熟能生巧”，未来进入企业即可直接上手，无需再花时间适应。

## Git 简介

**Git 是目前全球最流行、最强大&#x7684;****分布式版本控制系统****（Distributed Version Control System, DVCS），最初由 Linux 之父 Linus Torvalds 为管理 Linux 内核开发而创建。它能够敏捷高效地处理从小型到超大型项目的版本管理需求。**

**简单来说，Git 是一个强大的代码管理工具。开发者使用 Git 通常基于以下三大核心诉求：**

* **代码管理与备份**：Git 提供了一个本地与远程相结合的仓库系统。开发者可以随时将代码提交到本地仓库进行安全备份，并推送到远程仓库，有效防止代码丢失。
* **版本控制与回溯**：Git 采用“快照（Snapshot）”而非“差异”的方式记录文件变化。当项目经历多次迭代后，开发者可以轻松查看任意历史版本的更新内容、对比差异，甚至一键回滚到之前的稳定状态。
* **团队协作与分支管理**：面对多人（前端、后端、UI、运维等）协同开发，Git 提供了极其轻量且高效的分支（Branch）管理机制。团队成员可以在各自的分支上独立开发、互不干扰，最后通过合并（Merge）或拉取请求（Pull Request）安全地整合代码，彻底告别文件操作混乱。

## 核心学习资源

**官方文档与书籍**

* **Git 官方网站**：[git-scm.com](https://git-scm.com/?hl=zh-cn) —— 下载最新版本、查阅官方命令手册（Reference Manual），权威第一手资料。
* **Conventional Commits**：[conventionalcommits.org](https://www.conventionalcommits.org/zh-hans/v1.0.0/) —— 约定式提交规范（`feat`、`fix`、`chore` 等 type 前缀），配合「工作流规范」篇一起看，也是本仓库 commitlint 校验的依据。

## Git 安装

在使用命令之前，先在本地安装 Git。

下面以 Windows 系统为例，macOS 可使用 `brew install git`，Linux 使用对应发行版的包管理器安装。

### 1. 进入官网下载页

打开 Git 官网 [git-scm.com](https://git-scm.com/)，页面会根据当前系统显示对应的下载入口，点击右侧的 **Download for Windows**。

![Git 官网首页，点击 Download for Windows 下载按钮](/images/study-git/index/install-01.png)

### 2. 选择 64 位安装包

进入下载页面后，在 Standalone Installer 一栏选择 **64-bit Git for Windows Setup**；如果是 32 位系统，则选择对应的 32-bit 版本。

![Windows 下载页，在 Standalone Installer 中选择 64-bit Git for Windows Setup](/images/study-git/index/install-02.png)

下载到本地后，我们只需双击软件，就可以直接进入安装流程。按提示点击下一步，至到软件安装完成即可。

### 3. 安装时选择默认编辑器

运行安装包，安装向导中大部分选项保持默认即可；在 Choosing the default editor used by Git 这一步，建议将默认编辑器从 Vim 改为 **Use Visual Studio Code as Git's default editor**，这样在我们后面提交代码时，如果发生冲突需要修改代码时，会自动在`VSCode`编辑器中打开，提示用户做相关修改。

![Git 安装向导，默认编辑器选择 Use Visual Studio Code as Git's default editor](/images/study-git/index/install-03.png)

## 初次运行 Git 前的配置

安装完 Git 之后，要做的第一件事就是设置用户名和邮箱。这一点很重要，因为每一个 Git 提交都会使用这些信息，它们会被写入到每一次提交中，不可更改。

::: tip 为什么需要设置用户名和邮箱？
我们每一次生成的项目版本都会记录一些信息，里面既包含当前项目的代码，也包含「是谁提交的」以及「通过什么方式可以联系到提交人」。其他人查看代码时，如果觉得有问题，就可以通过这个联系方式联系到提交者。所以 Git 在生成版本时，一定要记录提交人和联系方式。
:::

### 全局配置

使用 `--global` 选项，表示设置的是全局配置：当前电脑用户下用 Git 管理的所有项目，在生成提交信息时都会自动读取这个用户名和邮箱。全局配置只需运行一次，就会对当前用户的所有仓库生效。

```bash
git config --global user.name 'your-name'        # 全局配置用户名
git config --global user.email 'you@example.com' # 全局配置邮箱
```

::: tip 配置文件位置
使用 `--global` 配置的信息保存在当前用户目录下的 `~/.gitconfig` 文件中（Windows 例如 `C:\Users\你的用户名\.gitconfig`）。
:::

### 当前项目单独配置

如果想为当前项目单独配置用户名和邮箱，进入该项目目录后运行不带 `--global` 选项的命令即可。此时 Git 管理这个项目时，会使用当前项目下配置的用户名和邮箱。

```bash
git config user.name 'your-name'        # 当前项目的用户名
git config user.email 'you@example.com' # 当前项目的邮箱
```

当前项目单独配置的信息，保存在当前项目的 `.git/config` 文件中。

### 系统级配置

Git 安装目录下的 `/etc/gitconfig` 文件包含系统上每一个用户及其仓库的通用配置。执行 `git config` 时带上 `--system` 选项，就会读写该文件中的配置变量。由于它是系统配置文件，修改时需要管理员（超级用户）权限。

```bash
git config --system user.name 'your-name'
git config --system user.email 'you@example.com'
```

如果不知道 Git 的安装目录，可以执行以下命令查找：

```bash
where git   # Windows；macOS / Linux 使用 which git
```

::: tip 配置优先级
三个级别的配置会逐层覆盖：

* `.git/config`（项目级）会覆盖 `~/.gitconfig`（全局级）
* `~/.gitconfig`（全局级）会覆盖 `/etc/gitconfig`（系统级）

即**就近原则：项目级 > 全局级 > 系统级**。
:::

## 使用 Git 管理项目

安装好 Git 后，它并不会自动管理电脑上的项目——如果自动管理，Git 就乱了，因为电脑上并不是所有项目都需要它。需要让 Git 管理哪个项目，就要显式告诉它。

在需要 Git 管理的项目根目录下执行 `git init`，初始化一个 Git 本地仓库，Git 就会开始管理这个项目：

```bash
git init
```

命令执行后，会在当前项目根目录下创建一个名为 `.git` 的子目录，其中包含初始化的 Git 仓库所必需的全部文件，是 Git 仓库的骨干。

`.git` 文件夹默认是隐藏的。在 Windows 文件资源管理器中，按下图在「查看」选项卡勾选「隐藏的项目」，即可让它显示出来：

![在「查看」选项卡勾选「隐藏的项目」以显示 .git 文件夹](/images/study-git/index/1.png)

完成以上准备工作后，就可以继续学习 Git 具体是如何管理项目的了（暂存、提交等操作见「基础命令」篇后续内容）。

## 学习目录

* [基础命令](/study/git/basics)：`init`、`add`、`commit`、`status`、`log`，从仓库初始化到提交历史查看
* [分支与合并](/study/git/branch-merge)：`branch`、`switch`、`merge` 与合并冲突解决
* [远程协作](/study/git/remote-collaboration)：`remote`、`push`、`pull`、`fetch` 与 Pull Request 流程
* [工作流规范](/study/git/workflow)：分支模型、commitlint 提交规范与代码评审约定
