Skip to content

Git 教程

1. Git 简介与核心概念

Git 是目前世界上最先进的分布式版本控制系统(Distributed Version Control System,DVCS)。与 SVN 等集中式版本控制系统不同,Git 的每个开发者电脑上都拥有一个完整的版本库,这意味着大多数操作都可以在本地完成,无需联网,且速度极快。

Git 的核心设计理念是基于快照(Snapshot)而非差异(Difference)。当你提交更新时,Git 会对当前文件系统的状态制作一个快照并保存这个快照的索引。如果文件没有修改,Git 不会重新存储该文件,而是只保留一个链接指向之前存储的文件。

核心区域

理解 Git 的三个工作区域是掌握 Git 的关键:

  1. 工作区(Working Directory):你电脑里能看到的目录,用于编辑文件。
  2. 暂存区(Staging Area / Index):一般存放在 .git 目录下的 index 文件中,保存了下次将要提交的文件列表信息。
  3. 本地仓库(Local Repository):工作区有一个隐藏目录 .git,这是 Git 的版本库,存贮了所有的版本数据。

此外,还有一个 远程仓库(Remote Repository),用于托管代码和协作。

2. 安装与初始化配置

在开始使用 Git 之前,你需要安装它并进行基础配置。Git 的配置分为三个层级:系统级(System)、用户级(Global)和仓库级(Local)。通常我们只需要配置用户级即可。

身份配置

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

bash
# 设置全局用户名
git config --global user.name "Your Name"

# 设置全局邮箱
git config --global user.email "email@example.com"

查看配置

你可以使用以下命令查看所有的配置以及它们所在的文件:

bash
git config --list --show-origin

初始化仓库

要在当前目录下初始化一个新的 Git 仓库,使用以下命令。这会在当前目录下生成一个 .git 子目录。

bash
git init

3. 基础工作流

Git 的日常工作流通常包含修改文件、暂存更改、提交更新这几个步骤。

检查状态

git status 是你最常用的命令之一。它会告诉你哪些文件处于什么状态(已修改、已暂存、未跟踪等)。

bash
git status

跟踪与暂存文件

使用 git add 命令将文件添加到暂存区。这是告诉 Git:“我想要在下一次提交中包含这个文件的当前变更”。

bash
# 暂存指定文件
git add filename.txt

# 暂存当前目录下的所有变更(包括新建和修改,不包括删除)
git add .

# 暂存所有变更(包括删除)
git add -A

提交更新

当文件暂存后,你可以使用 git commit 将它们提交到本地仓库。提交时必须包含提交信息(Commit Message),清晰的提交信息对于团队协作至关重要。

bash
# 提交并附带简短信息
git commit -m "feat: add user login function"

# 跳过暂存区直接提交所有已跟踪的修改文件(不推荐用于新文件)
git commit -a -m "fix: correct typo in readme"

查看提交历史

使用 git log 查看提交历史。

bash
# 查看详细历史
git log

# 查看简略历史,每条记录一行
git log --oneline

# 查看图形化的分支历史
git log --oneline --graph --all

4. 分支管理

分支(Branch)是 Git 的杀手级特性。它允许你从开发主线上分离开来,在不影响主线的同时继续工作。Git 的分支模型非常轻量级,创建和切换分支的操作几乎是瞬间完成的。

分支操作

bash
# 创建新分支
git branch feature-login

# 切换到该分支
git checkout feature-login
# 或者使用新版命令
git switch feature-login

# 创建并立即切换到新分支
git checkout -b feature-login

合并分支

当你完成了新功能的开发,需要将其合并回主分支(通常是 mainmaster)。

bash
# 首先切换回主分支
git switch main

# 将 feature-login 分支合并到当前分支
git merge feature-login

分支管理策略

在实际开发中,我们通常遵循一定的分支管理规范,例如 Git Flow 或 GitHub Flow。

5. 远程协作

远程仓库是指托管在网络或其他位置的 Git 仓库。常见的托管服务有 GitHub、GitLab 和 Gitee。

克隆仓库

如果你想获得一份已经存在的 Git 仓库的拷贝,使用 git clone

bash
git clone <https://github.com/user/repo.git>

远程操作

bash
# 查看远程仓库信息
git remote -v

# 添加远程仓库
git remote add origin <https://github.com/user/repo.git>

# 将本地分支推送到远程
git push -u origin main

# 拉取远程更新并合并到本地
git pull origin main

# 仅拉取远程更新但不合并
git fetch origin

6. 高级操作与技巧

撤销操作

在 Git 中,后悔药是有的,但要小心使用。

  • 撤销工作区的修改git checkout -- <file>git restore <file>。这会丢弃工作区的修改,恢复到最近一次提交的状态。
  • 撤销暂存区的修改git reset HEAD <file>git restore --staged <file>。这会将文件从暂存区移除,但保留工作区的修改。
  • 修改最后一次提交:如果你提交后发现漏了文件或写错了提交信息,可以使用 git commit --amend

变基(Rebase)

变基是另一种合并分支的方法。与 merge 不同,rebase 会将当前分支的提交“搬运”到目标分支的顶端,从而产生一条线性的提交历史。

Rebase Operation:C1C2C3CbaseC1C2C3\text{Rebase Operation}: C_1 \rightarrow C_2 \rightarrow C_3 \Rightarrow C_{base} \rightarrow C_1' \rightarrow C_2' \rightarrow C_3'

bash
# 切换到特性分支
git switch feature

# 将 feature 分支变基到 main 分支
git rebase main

注意:永远不要在公共分支(如 main)上使用 rebase,这会破坏其他人的提交历史。

储藏(Stash)

当你正在进行一项工作,但需要临时切换分支修复 Bug,而当前工作又不足以提交时,可以使用 git stash

bash
# 储藏当前工作现场
git stash

# 查看储藏列表
git stash list

# 恢复最近一次储藏并删除记录
git stash pop

7. 最佳实践

为了保持代码库的整洁和可维护性,建议遵循以下最佳实践:

  1. 原子提交(Atomic Commits):每个提交应该只包含一个逻辑上的变更。不要将修复 Bug 和重构代码混在一个提交中。
  2. 清晰的提交信息:遵循 Conventional Commits 规范,例如 type(scope): subject
    • feat: 新功能
    • fix: 修复 Bug
    • docs: 文档变更
    • style: 代码格式(不影响代码运行的变动)
    • refactor: 重构(既不是新增功能,也不是修改 bug 的代码变动)
  3. 使用 .gitignore:忽略编译生成的文件、临时文件和敏感配置文件。不要将 node_modules.env 等文件提交到仓库。

.gitignore 示例

text
# 依赖目录
node_modules/
dist/

# 系统文件
.DS_Store
Thumbs.db

# 环境变量
.env

构建时间:1/4/2026, 4:04:11 PM | 本博客内容均为自己学习,如内容涉及侵权,请联系邮箱:pangzl0215@163.com