什么是 Git?
版本控制
记录文件的每一次修改历史,可以随时回溯到任意版本,就像给代码做"时光机"。
分支管理
轻松创建、合并分支,多人协作互不干扰。团队开发的标准工作流。
快照存储
每次提交 (commit) 都是完整的文件快照,而非差异记录。保证数据完整性。
分布式架构
每个开发者都有完整的代码仓库副本,无需依赖中央服务器即可工作。
开源免费
Git 由 Linus Torvalds 创建,完全开源免费,是全世界开发者共同维护的工具。
全平台支持
Windows、macOS、Linux 原生支持,并深度集成到 VS Code、JetBrains 等主流 IDE 中。
Git 的三大工作区域
理解这三个区域是掌握 Git 的关键:
工作目录 Working Directory
你在电脑上看到的项目文件夹,就是工作目录。在这里编辑、创建、删除文件。
暂存区 Staging Area
用 git add 将修改提交到暂存区,相当于"购物车",准备下一次提交。
本地仓库 Local Repository
用 git commit 将暂存区的内容永久保存到本地仓库,形成一次版本记录。
检查电脑是否已安装 Git
打开终端(Windows 用 CMD/PowerShell,macOS/Linux 用终端),输入以下命令:
git version 2.45.0),说明 Git 已经安装好了,可以直接跳到快速上手部分。
下载与安装 Git
-
下载对应系统的安装包
Windows: 下载 .exe 安装程序 (64-bit / 32-bit)
macOS: 下载 .dmg 或通过 Homebrew:brew install git
Linux: 使用包管理器:sudo apt install git(Ubuntu) /sudo yum install git(CentOS) -
运行安装程序(Windows 用户参考)
双击 .exe 文件,一路点击"Next",默认选项即可满足大部分需求。安装完成后,重新打开终端,再次运行
git --version验证安装成功。
快速上手:从初始化到第一次提交
初始化仓库
在项目文件夹中打开终端,执行:
Initialized empty Git repository in /your-project/.git/
这会在文件夹中创建隐藏的 .git 目录,一切版本信息都存储在这里。
克隆远程仓库
从 GitHub/GitLab 等平台克隆已有项目:
Cloning into 'repo'...
克隆命令会自动创建文件夹、初始化 Git,并下载全部版本历史。
日常使用四步走
$ 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.email "你的邮箱@example.com"
# 查看当前配置
$ git config --list
主流编译器 / 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 右键菜单功能,附带实际操作截图,帮助你真正理解每一步的含义。
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 / 变基 高级操作
功能:将当前分支的提交"平移"到目标分支的最新位置。与 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 命令,开启你的版本控制之旅。
推荐:通过游戏化的方式理解 Git 分支、合并、变基等概念