Git 是一个分布式版本控制系统,用于高效管理项目源代码。掌握其核心命令是开发者必备技能。以下是一份精炼的 Git 核心命令速查表,旨在帮助你在 2 分钟内快速回顾或上手。
一、 Git 工作流与核心区域
Git 操作围绕三个核心区域展开:工作区、暂存区、本地仓库。理解它们的关系是掌握命令的基础。
| 区域 | 描述 |
|---|---|
| 工作区 | 本地项目目录,直接编辑文件的地方。 |
| 暂存区 | 一个缓存区域,用于临时存放准备提交的更改。 |
| 本地仓库 | 存储项目所有版本历史的数据库。 |
| 远程仓库 | 托管在网络上的项目仓库,如 GitHub、GitLab。 |
二、 核心命令速查表
下表按操作流程分类,汇总了最常用、最核心的 Git 命令。
| 操作类别 | 命令 | 描述与常用参数 |
|---|---|---|
| 配置与初始化 | git config --global user.name "Your Name" |
设置全局用户名。 |
git config --global user.email "email@example.com" |
设置全局邮箱。 | |
git init |
在当前目录初始化一个新的 Git 仓库。 | |
git clone <url> |
克隆一个远程仓库到本地。 | |
| 文件状态与暂存 | git status |
查看工作区和暂存区的文件状态。 |
git add <file> |
将指定文件从工作区添加到暂存区。 | |
git add . |
将所有修改和新增的文件添加到暂存区。 | |
git add -A |
添加所有变化(修改、新增、删除)到暂存区。 | |
| 提交更改 | git commit -m "提交信息" |
将暂存区的所有内容提交到本地仓库。 |
git commit --amend |
修改最新一次提交的提交信息或内容,不产生新提交。 | |
| 查看历史与差异 | git log |
查看提交历史。 |
git log --oneline --graph |
以单行、图形化方式查看提交历史。 | |
git diff |
比较工作区和暂存区的差异。 | |
git diff --staged |
比较暂存区和本地仓库的差异。 | |
| 分支管理 | git branch |
列出所有本地分支(当前分支前有 * 标记)。 |
git branch <branch-name> |
创建新分支。 | |
git checkout <branch-name> |
切换到指定分支。 | |
git checkout -b <branch-name> |
创建并切换到新分支。 | |
git merge <branch-name> |
将指定分支合并到当前分支。 | |
git branch -d <branch-name> |
删除已合并的指定分支。 | |
git branch -D <branch-name> |
强制删除指定分支(无论是否合并)。 | |
| 远程仓库操作 | git remote -v |
查看远程仓库地址。 |
git pull origin <branch> |
从远程仓库拉取并合并指定分支的更新到当前分支。 | |
git push origin <branch> |
将当前分支推送到远程仓库的指定分支。 | |
git push -u origin <branch> |
推送并设置上游分支(首次推送常用)。 | |
| 撤销与回滚 | git restore <file> |
丢弃工作区中指定文件的修改(Git 2.23+)。 |
git restore --staged <file> |
将暂存区的指定文件移回工作区。 | |
git reset --soft HEAD~1 |
撤销最近一次提交,但保留更改在暂存区。 | |
git reset --hard HEAD~1 |
危险! 撤销最近一次提交,并丢弃所有更改。 | |
git revert <commit-id> |
创建一个新的提交来撤销指定提交的更改(安全)。 | |
| 临时保存 | git stash |
将当前工作区和暂存区的修改临时保存起来。 |
git stash pop |
恢复最近一次保存的修改,并从 stash 列表中删除。 | |
git stash list |
列出所有保存的 stash。 |
三、 核心场景与命令组合示例
场景一:日常开发与提交
这是最常见的流程:修改代码 -> 暂存 -> 提交。
bash
# 1. 查看修改了哪些文件
git status
# 2. 将所有修改添加到暂存区
git add .
# 3. 提交到本地仓库,并附上清晰的提交信息
git commit -m "feat: 新增用户登录验证功能"
# 4. 将本地提交推送到远程仓库(假设当前分支为 main)
git push origin main
场景二:处理分支与合并
分支是 Git 的杀手级功能,用于功能开发和 Bug 修复。
bash
# 1. 基于 main 分支创建一个新功能分支
git checkout -b feature/add-search
# 2. 在新分支上开发并提交
# ... (编写代码)
git add .
git commit -m "feat: 实现基础搜索功能"
# 3. 开发完成后,切换回主分支并合并
git checkout main
git pull origin main # 先拉取最新的 main 分支代码
git merge feature/add-search
# 4. 如果合并成功,推送 main 分支并删除已合并的特性分支
git push origin main
git branch -d feature/add-search
场景三:撤销误操作
这是 Git 安全性的体现,提供了多种"后悔药"。
bash
# 1. 不小心 `git add` 了不该暂存的文件,将其移出暂存区
git restore --staged unwanted_file.txt
# 2. 工作区的修改写乱了,想恢复到上次提交的状态
git restore modified_file.txt
# 3. 提交信息写错了,想修改最后一次提交的信息(未推送时)
git commit --amend -m "新的提交信息"
# 4. 已推送的提交有问题,使用 `revert` 安全地撤销
# 先找到要撤销的提交ID
git log --oneline
# 假设要撤销的提交ID是 abc1234
git revert abc1234
# 这会创建一个新的提交来抵消 abc1234 的更改,然后正常 push 即可
场景四:暂存工作现场
当需要紧急切换到其他分支处理问题,但当前工作未完成时。
bash
# 1. 保存当前未提交的修改
git stash save "WIP: 正在开发购物车功能"
# 2. 切换到其他分支处理紧急任务
git checkout main
# ... (修复bug并提交)
# 3. 切换回原分支,恢复工作现场
git checkout feature/cart
git stash pop
四、 进阶提示与最佳实践
- 提交信息规范 :使用清晰、一致的提交信息格式(如
feat:,fix:,docs:),便于团队协作和后期追溯 。 - 频繁提交:将大功能拆分为多个小提交,每个提交只做一件事,便于回滚和代码审查。
- 勤拉取 :在开始工作前和推送前,先执行
git pull更新本地代码,减少合并冲突。 - 理解
merge与rebase:merge保留完整历史,适合公共分支;rebase使历史线更整洁,适合个人分支整理。在团队协作中,谨慎使用rebase修改已共享的提交历史。 - 善用
.gitignore文件 :将日志、编译产物、IDE 配置文件等加入.gitignore,避免无关文件进入版本库。
这份速查表覆盖了 Git 日常开发中 95% 以上的场景。掌握这些命令,你就能高效地进行版本控制。建议将常用命令组合(如 git add . && git commit -m "...")形成肌肉记忆,并结合图形化工具(如 gitk 或 IDE 集成)辅助理解分支和提交历史。