Git 学习指南

Git 是目前世界上最先进的分布式版本控制系统——从零开始,轻松掌握代码版本管理

Part 1

什么是 Git?

版本控制

记录文件的每一次修改历史,可以随时回溯到任意版本,就像给代码做"时光机"。

分支管理

轻松创建、合并分支,多人协作互不干扰。团队开发的标准工作流。

快照存储

每次提交 (commit) 都是完整的文件快照,而非差异记录。保证数据完整性。

分布式架构

每个开发者都有完整的代码仓库副本,无需依赖中央服务器即可工作。

开源免费

Git 由 Linus Torvalds 创建,完全开源免费,是全世界开发者共同维护的工具。

全平台支持

Windows、macOS、Linux 原生支持,并深度集成到 VS Code、JetBrains 等主流 IDE 中。

Git 的三大工作区域

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

工作目录 Working Directory

你在电脑上看到的项目文件夹,就是工作目录。在这里编辑、创建、删除文件。

暂存区 Staging Area

git add 将修改提交到暂存区,相当于"购物车",准备下一次提交。

本地仓库 Local Repository

git commit 将暂存区的内容永久保存到本地仓库,形成一次版本记录。

Step 1

检查电脑是否已安装 Git

打开终端(Windows 用 CMD/PowerShell,macOS/Linux 用终端),输入以下命令:

$ git --version
✅ 如果显示版本号(例如 git version 2.45.0),说明 Git 已经安装好了,可以直接跳到快速上手部分。
❌ 如果提示 "git 不是内部或外部命令" 或 "command not found",说明电脑上还没有安装 Git,请继续看下面的安装步骤。
Step 2

下载与安装 Git

  1. 访问 Git 官方网站

    打开 https://git-scm.com ,网站会自动识别你的操作系统并推荐对应版本。你也可以使用下面的嵌入式窗口直接浏览:

    https://git-scm.com 在新标签页打开
  2. 下载对应系统的安装包

    Windows: 下载 .exe 安装程序 (64-bit / 32-bit)
    macOS: 下载 .dmg 或通过 Homebrew: brew install git
    Linux: 使用包管理器: sudo apt install git (Ubuntu) / sudo yum install git (CentOS)

    https://git-scm.com/downloads 在新标签页打开
  3. 运行安装程序(Windows 用户参考)

    双击 .exe 文件,一路点击"Next",默认选项即可满足大部分需求。安装完成后,重新打开终端,再次运行 git --version 验证安装成功。

Step 3

快速上手:从初始化到第一次提交

初始化仓库

在项目文件夹中打开终端,执行:

$ git init
Initialized empty Git repository in /your-project/.git/

这会在文件夹中创建隐藏的 .git 目录,一切版本信息都存储在这里。

克隆远程仓库

从 GitHub/GitLab 等平台克隆已有项目:

$ git clone https://github.com/user/repo.git
Cloning into 'repo'...

克隆命令会自动创建文件夹、初始化 Git,并下载全部版本历史。

日常使用四步走

# 1. 查看文件状态(哪些改了、哪些还没追踪)
$ git status

# 2. 将修改添加到暂存区
$ git add .   ← 添加所有修改 | git add <文件名> 添加指定文件

# 3. 提交到本地仓库(生成一个版本快照)
$ git commit -m "描述你做了什么修改"

# 4. 推送到远程仓库(与团队分享)
$ git push origin main

常用命令速查

git status

查看当前工作目录和暂存区的状态,告诉你哪些文件被修改、哪些还没被追踪。

git log

查看提交历史记录,包括作者、日期、提交信息。加 --oneline 可简化输出。

git diff

查看文件的具体修改内容(尚未暂存的改动)。加 --staged 查看已暂存的改动。

git branch

查看所有分支。加分支名可创建新分支:git branch feature-xxx

git checkout / git switch

切换到指定分支。例如:git switch main 切回主分支。

git merge

将指定分支的修改合并到当前分支。例如:git merge feature-xxx

初次使用:配置用户信息

安装 Git 后,首先需要配置你的用户名和邮箱——每次提交都会记录这些信息。

$ git config --global user.name "你的名字"
$ git config --global user.email "你的邮箱@example.com"

# 查看当前配置
$ git config --list

Part 2

主流编译器 / IDE 中的 Git 使用

现代 IDE(集成开发环境)都内置了强大的 Git 图形化界面,让你无需记忆命令行即可完成绝大部分版本控制操作。以下以 VS Code、JetBrains 系列(IntelliJ IDEA、PyCharm、WebStorm 等)为代表说明。

VS Code

  • 左侧活动栏的源代码管理图标(Ctrl+Shift+G)
  • 内置 Git 图形界面:暂存、提交、推送、拉取
  • 文件编辑器内嵌 diff 对比视图
  • 强大的 GitLens 等扩展插件
  • 底部状态栏显示当前分支和同步状态

JetBrains 系列

  • 顶部菜单 VCS / Git 菜单
  • 项目文件右键 Git 子菜单(功能最全)
  • Commit 窗口(Alt+0)、Git 分支管理窗口
  • 文件历史时间线、Annotate(Git Blame)
  • 可视化合并冲突解决工具
中英对照

Git 右键菜单 — 中英功能对比

在 IDE 中右键点击文件或项目目录,会弹出 Git 子菜单。以下是 JetBrains IDE 中 Git 右键菜单的中英文功能逐一对照,帮助你快速上手任何语言界面:

🇬🇧 英文版右键菜单 — Git Submenu
English Git Context Menu
🇨🇳 中文版右键菜单 — Git 子菜单
Chinese Git Context Menu

功能一一对照表

# English 中文 功能说明
1 Commit File... 提交文件... 将当前文件的修改提交到本地仓库,会弹出提交窗口让你填写提交信息
2 Add to VCS 添加到版本控制 将未追踪的新文件添加到 Git 的追踪列表(相当于 git add
3 Rollback 回滚 撤销对文件的未提交修改,恢复到上次提交时的状态
4 Show Diff 显示差异 对比当前文件与上次提交之间的差异,以并排或统一视图展示
5 Show History 显示历史 查看当前文件的所有提交历史记录,包括每次修改的作者、时间和内容
6 Annotate with Git Blame 使用 Git Blame 注释 在代码编辑器的左侧边栏显示每行代码是谁在什么时候修改的
7 Revert 还原 通过创建一个新的提交来撤销之前某个提交的更改(安全的方式,保留历史)
8 Resolve Conflicts 解决冲突 当合并或变基出现冲突时,使用可视化工具手动选择保留哪部分的代码
9 Branches... 分支... 打开分支管理面板,可以创建、切换、合并、删除分支,查看分支树
10 Tag... 标签... 给当前的提交打上标签(如 v1.0.0),通常用于标记发布版本
11 Merge... 合并... 将其他分支的修改合并到当前分支,可选择合并策略
12 Rebase... 变基... 将当前分支的提交"移动"到目标分支的最新位置,使提交历史更线性
13 Cherry-Pick... 遴选... 挑选其他分支的某个或某几个提交,单独应用到当前分支
14 Stash Changes 暂存更改 将当前未提交的修改临时保存起来,让工作目录恢复干净,稍后可恢复
15 Unstash Changes 恢复暂存更改 将之前 Stash 保存的修改恢复到工作目录中(相当于 git stash pop
16 Reset... 重置... 将当前分支的 HEAD 指针移动到指定的提交,可选择是否保留工作目录的修改
17 Remotes... 远程... 管理远程仓库的配置,包括添加、删除、修改远程仓库的 URL
18 Pull... 拉取... 从远程仓库获取最新代码并合并到本地(相当于 git fetch + git merge
19 Push... 推送... 将本地提交推送到远程仓库,让团队成员看到你的代码更新
20 Fetch 获取 从远程仓库下载最新的提交和分支信息,但不自动合并到本地分支
21 Patch... 补丁... 将提交生成补丁文件,或将补丁文件应用到项目中
22 Submodules... 子模块... 管理项目中引用的其他 Git 仓库(子模块),包括更新、同步等
图文详解

重点功能 —— 图文详解

以下逐一详解最常用的 Git 右键菜单功能,附带实际操作截图,帮助你真正理解每一步的含义。

Commit / 提交 最常用操作

功能:将暂存区的修改保存为一个版本快照。这是 Git 最核心的操作——每次 Commit 都会生成一个唯一的 SHA-1 哈希值作为版本标识。

使用场景:完成一个功能点、修复一个 bug、重构一段代码后,都应该立即提交。提交信息应简洁明了地描述"做了什么"。

命令行等价:git commit -m "message"

Show Diff / 显示差异 代码审查核心

功能:对比两个版本之间的代码差异。绿色背景表示新增的行,红色背景表示删除的行。是代码审查和追溯修改的核心工具。

使用场景:提交前检查修改是否正确、审查 PR 中的代码变更、排查某个 bug 是何时引入的。

命令行等价:git diff / git diff HEAD~1

Show History / 显示历史 追溯利器

功能:以时间线视图展示当前文件或整个项目的所有提交记录。每条记录包含提交哈希、作者、日期、提交信息,点击可查看该次提交的完整改动。

使用场景:了解一个文件是如何一步步变成现在的样子的、追踪 bug 的引入时间点、回顾项目的开发历程。

命令行等价:git log / git log --oneline --graph

Annotate (Git Blame) / 注释 代码溯源

功能:在编辑器左侧边栏显示每一行代码的修改者、修改时间和提交信息。注意 "Blame" 不是"责备"的意思,而是追溯每行代码的"归属"。

使用场景:遇到看不懂的代码想找原作者请教、排查某行代码的修改原因、了解特定逻辑的背景和上下文。

命令行等价:git blame filename

分支与合并流程图

Branch & Merge / 分支与合并 团队协作核心

分支 (Branch):从主线分离出一条独立的开发线,在上面可以自由修改而不影响主线。开发新功能时,通常创建功能分支:feature/new-login

合并 (Merge):当一个功能开发完成并通过测试后,将其分支合并回主线(如 main 分支)。合并有快进合并、三方合并等策略。

命令行等价:git branch feature-xxx / git merge feature-xxx

Rebase 变基示意图

Rebase / 变基 高级操作

功能:将当前分支的提交"平移"到目标分支的最新位置。与 Merge 不同,Rebase 会让提交历史更干净、更线性,不会留下额外的"合并提交"。

注意事项:不要对已经推送到远程的公共分支执行 Rebase,否则会导致协作伙伴的历史不一致。

命令行等价:git rebase main

Stash / 暂存更改 临时保存

功能:当你正在修改代码但突然需要切换分支处理紧急任务时,Stash 可以把你当前的修改"放一边",让工作目录恢复干净。回头再恢复这些修改继续工作。

使用场景:开发到一半需要切换去修 bug、拉取远程更新前保存本地改动、临时尝试另一种方案。

命令行等价:git stash / git stash pop / git stash list

Reset / Revert / 重置与还原 撤销操作

Revert(推荐): 创建一个新的提交来撤销之前的修改,历史记录完整,可安全推送到远程。

Reset: 将 HEAD 指针直接移动到指定的提交,有三档强度:--soft(保留暂存)、--mixed(默认,保留工作区)、--hard(全部丢弃,危险⚠️)。

经验法则:已推送的 → 用 Revert;未推送的 → 可用 Reset。

实践建议 & 最佳实践

提交信息写清楚

使用"动词 + 宾语"格式,如"修复登录页面样式错乱",而不是"更新代码"。好的提交信息是未来的你在感谢现在的你。

勤提交,小步走

每次提交只做一件事。不要攒了 20 个文件的修改才提交一次——小而频繁的提交让问题更容易定位和回溯。

用分支隔离工作

开发新功能?切一个新分支。修 bug?再切一个。永远不要在 main 分支上直接改代码。分支就是你的"安全网"。

拉取前先提交或暂存

执行 git pull 之前,确保工作目录是干净的(先 commit 或 stash)。否则可能遇到不必要的合并冲突。

准备好开始了吗?

Git 是每个程序员的必修课。打开终端,输入第一条 Git 命令,开启你的版本控制之旅。

https://git-scm.com/book/zh/v2 — Pro Git 中文版(最权威的学习资源) 打开阅读

推荐:通过游戏化的方式理解 Git 分支、合并、变基等概念