发布于2026-07-07 阅读(0)
扫一扫,手机访问
本篇是 Git 系列的第 6 篇,也是整个系列的收官之作——一份实打实的命令速查手册。

前5篇我们从入门讲到企业级实战,覆盖了本地仓库、分支管理、远程操作、多人协作和企业模型。但说实话,5篇文章里堆了100多个命令,新人最常遇到的卡点是:
没错,这篇就是来“治”这个问题的。
所有在前5篇中间出现过的命令,全部按功能分类整理成手册。每个命令配上一句话功能说明、最常用参数和典型示例。不用谢,它就是你的Git命令字典——以后写代码卡壳了,直接翻。
本节目标:让你手边随时有一张Git命令速查表。原理部分不再深入(详见第1-5篇),咱们只讲怎么用。
通过本文,你将掌握:
| 技能 | 应用场景 |
|---|---|
| 12大类Git命令的速查 | 写代码时随时翻 |
| 80+核心命令的标准用法 | 覆盖95%日常场景 |
| 效率别名的配置 | 让Git更好用 |
| 常用操作的标准流程 | 团队统一规范 |
前置知识: 读过前5篇任意一篇即可。这篇是工具书,直接当字典用。
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
git config |
配置Git | --global(全局)--local(当前仓库)--list(查看) |
git config --global user.name "Your Name" |
git config --global user.name |
设置用户名 | - | git config --global user.name "say_fall" |
git config --global user.email |
设置邮箱 | - | git config --global user.email "your@email.com" |
git config --global init.defaultBranch |
设置默认分支名 | - | git config --global init.defaultBranch main |
git config --global color.ui |
开关颜色 | auto / false / true |
git config --global color.ui auto |
git config --global pull.rebase |
pull 行为 | true / false |
git config --global pull.rebase true |
git config --global rerere.enabled |
开启冲突记忆 | true / false |
git config --global rerere.enabled true |
git config --global core.editor |
设置默认编辑器 | - | git config --global core.editor vim |
git config --list |
查看所有配置 | - | git config --list |
git config --get |
查看某项配置 | - | git config --get user.name |
git config --unset |
取消某项配置 | - | git config --unset user.email |
配置分3层:--system(系统级)→ --global(用户级)→ --local(仓库级)。后一层覆盖前一层。
常用一次性配置(新人必跑):
git config --global user.name "Your Name" git config --global user.email "your@email.com" git config --global init.defaultBranch main git config --global color.ui auto git config --global pull.rebase true git config --global core.editor vim
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
git init |
初始化本地仓库 | - | git init |
git init |
在指定目录初始化 | - | git init my-project |
git init --bare |
初始化裸仓库(远程用) | - | git init --bare shared-repo.git |
git clone |
克隆远程仓库 | - | git clone git@github.com:user/repo.git |
git clone |
克隆到指定目录 | - | git clone |
git clone -b |
克隆指定分支 | - | git clone -b dev |
git clone --depth 1 |
浅克隆(只拉最近1次) | - | git clone --depth 1 |
git clone --bare |
克隆为裸仓库 | - | git clone --bare |
一句话说清 init 和 clone 的区别:init 是从零开始,本地已经有代码想用Git管理;clone 是复制远程仓库,拿别人的代码来用。
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
git status |
查看工作区状态 | -s(简洁)--short |
git status |
git add |
添加文件到暂存区 | - | git add app.py |
git add . |
添加所有改动 | - | git add . |
git add -A |
添加所有改动(包括删除) | - | git add -A |
git add -p |
交互式添加(按块) | - | git add -p |
git add -u |
只添加已追踪文件的修改 | - | git add -u |
git diff |
查看工作区与暂存区差异 | - | git diff |
git diff --staged |
查看暂存区与最新commit差异 | - | git diff --staged |
git diff |
查看当前分支与目标分支差异 | - | git diff master |
git rm |
删除文件并暂存 | - | git rm app.py |
git mv |
重命名文件 | - | git mv old.py new.py |
git restore |
恢复文件到暂存区状态 | - | git restore app.py |
git restore --staged |
取消暂存 | - | git restore --staged app.py |
git clean -fd |
删除未追踪文件/目录 | -f(强制)-d(目录) |
git clean -fd |
gitignore |
忽略文件(手动编辑.gitignore) |
- | 见下方说明 |
.gitignore 常用模板:
# Python __pycache__/ *.pyc .venv/ .env # Ja va *.class *.jar target/ # IDE .idea/ .vscode/ *.iml # OS .DS_Store Thumbs.db # Node node_modules/ npm-debug.log # 自定义 logs/ *.log
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
git commit -m "msg" |
提交暂存区 | -m(消息) |
git commit -m "feat: add login" |
git commit -am "msg" |
add + commit一起 | -a(自动add已追踪) |
git commit -am "fix bug" |
git commit --amend |
修改最后一次commit | - | git commit --amend -m "new msg" |
git commit --amend --no-edit |
修改最后一次commit(不改消息) | - | 同上 |
git commit -v |
提交时显示diff | - | git commit -v |
git commit --allow-empty |
允许空提交 | - | git commit --allow-empty -m "trigger CI" |
git reset |
取消暂存指定文件 | - | git reset app.py |
git reset --soft HEAD~1 |
软重置(保留改动到暂存区) | --soft |
git reset --soft HEAD~1 |
git reset --mixed HEAD~1 |
混合重置(默认,保留到工作区) | --mixed |
git reset HEAD~1 |
git reset --hard HEAD~1 |
硬重置(丢弃所有改动) | --hard |
git reset --hard HEAD~1 |
git reset --hard |
硬重置到指定commit | - | git reset --hard abc1234 |
git revert |
反转指定commit | - | git revert abc1234 |
git revert --no-edit |
反转(不弹编辑器) | - | git revert --no-edit HEAD |
git reflog |
查看所有操作记录 | - | git reflog |
reset 和 revert 的区别:reset 改写历史(危险操作),revert 创建反向commit(安全操作)。如果是已经push过的commit,用 revert。
reset 三种模式速记:
--soft ← HEAD位置改变,工作区和暂存区不动 --mixed ← HEAD和暂存区改变,工作区不动(默认) --hard ← 全部改变(最危险)
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
git log |
查看提交历史 | - | git log |
git log --oneline |
简洁模式(每行1个commit) | - | git log --oneline |
git log -n 5 |
只看最近5个 | - | git log -n 5 |
git log --graph |
图形化显示分支 | - | git log --graph --oneline |
git log --all |
显示所有分支 | - | git log --all |
git log --author="name" |
按作者筛选 | - | git log --author="say_fall" |
git log --since="2 days ago" |
按时间筛选 | - | git log --since="2 days ago" |
git log -p |
显示完整diff | - | git log -p |
git log --stat |
显示改动统计 | - | git log --stat |
git log -- |
查看某文件的修改历史 | - | git log -- app.py |
git log --grep="fix" |
按commit message搜索 | - | git log --grep="fix" |
git log -S "function" |
按代码内容搜索 | - | git log -S "login" |
git show |
显示某次提交的详情 | - | git show abc1234 |
git show |
显示某次提交的改动统计 | - | git show abc1234 --stat |
git blame |
显示文件每行是谁改的 | - | git blame app.py |
git shortlog |
按作者聚合统计 | - | git shortlog -sn |
推荐的 log 别名(后面有详细配置):
git log --graph --pretty=format:'%h -%d %s (%cr) <%an>' --abbrev-commit --all
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
git branch |
列出本地分支 | - | git branch |
git branch -a |
列出所有分支(含远程) | - | git branch -a |
git branch -r |
只列远程分支 | - | git branch -r |
git branch -vv |
显示分支跟踪信息 | - | git branch -vv |
git branch |
创建分支 | - | git branch dev |
git branch -d |
删除已合并分支 | -d |
git branch -d dev |
git branch -D |
强制删除分支 | -D |
git branch -D dev |
git branch --merged |
列出已合并分支 | - | git branch --merged |
git branch --no-merged |
列出未合并分支 | - | git branch --no-merged |
git branch -m |
重命名当前分支 | - | git branch -m main |
git branch -u |
设置上游分支 | - | git branch -u origin/dev |
git checkout |
切换分支(旧语法) | - | git checkout dev |
git checkout -b |
创建并切换(旧语法) | - | git checkout -b dev |
git switch |
切换分支(新语法) | - | git switch dev |
git switch -c |
创建并切换(新语法) | -c |
git switch -c dev |
git switch -c |
创建并跟踪远程分支 | - | git switch -c dev origin/dev |
git merge |
合并分支 | - | git merge dev |
git merge --no-ff |
非快进合并 | --no-ff |
git merge --no-ff dev |
git merge --squash |
压缩合并 | --squash |
git merge --squash dev |
git merge --abort |
取消合并 | - | git merge --abort |
git rebase |
变基到目标分支 | - | git rebase master |
git rebase -i HEAD~3 |
交互式rebase | -i |
git rebase -i HEAD~3 |
git rebase --continue |
冲突解决后继续 | - | git rebase --continue |
git rebase --abort |
取消rebase | - | git rebase --abort |
git rebase --skip |
跳过当前commit | - | git rebase --skip |
merge 和 rebase 速记:
| 维度 | merge | rebase |
|---|---|---|
| 历史 | 树状(merge commit) | 线性 |
| 适用 | 共享分支 | 本地feature |
| 危险度 | 低 | 高(改写历史) |
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
git stash |
暂存当前改动 | - | git stash |
git stash push -m "msg" |
暂存并加消息 | -m |
git stash push -m "login 写到一半" |
git stash -u |
包括未追踪文件 | -u |
git stash -u |
git stash list |
查看所有stash | - | git stash list |
git stash pop |
恢复并删除最新stash | - | git stash pop |
git stash apply stash@{0} |
恢复但不删除 | - | git stash apply stash@{0} |
git stash drop stash@{0} |
删除指定stash | - | git stash drop stash@{0} |
git stash show stash@{0} |
看stash的改动 | - | git stash show stash@{0} |
git stash show -p stash@{0} |
看stash的完整diff | -p |
git stash show -p stash@{0} |
git stash clear |
清空所有stash | - | git stash clear |
git stash branch |
从stash创建分支 | - | git stash branch dev stash@{0} |
stash本质是个栈结构(LIFO:后进先出)。stash@{0} 是最新的,stash@{1} 是上一个。
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
git remote |
列出远程仓库别名 | - | git remote |
git remote -v |
列出远程仓库URL | - | git remote -v |
git remote add |
添加远程仓库 | - | git remote add origin git@github.com:user/repo.git |
git remote remove |
删除远程仓库 | - | git remote remove origin |
git remote rename |
重命名远程 | - | git remote rename origin upstream |
git remote set-url |
修改远程URL | - | git remote set-url origin |
git remote show |
查看远程详情 | - | git remote show origin |
git remote prune |
清理已删除的远程跟踪分支 | - | git remote prune origin |
git fetch |
抓取远程更新(不合并) | - | git fetch origin |
git fetch --all |
抓取所有远程 | - | git fetch --all |
git fetch -p |
抓取并清理已删除远程分支 | -p |
git fetch -p |
git pull |
抓取 + 合并(默认) | - | git pull |
git pull |
拉取指定分支 | - | git pull origin dev |
git pull --rebase |
拉取并rebase | - | git pull --rebase |
git push |
推送到上游分支 | - | git push |
git push |
推送到指定分支 | - | git push origin dev |
git push -u |
推送并设置上游 | -u |
git push -u origin master |
git push --all |
推送所有分支 | - | git push --all |
git push --tags |
推送所有tag | - | git push --tags |
git push --delete |
删除远程分支 | - | git push origin --delete dev |
git push --force |
强制推送(危险) | --force |
git push --force origin master |
git push --force-with-lease |
安全强制推送 | --force-with-lease |
git push --force-with-lease origin master |
fetch 和 pull 速记:
| 命令 | 行为 | 何时用 |
|---|---|---|
fetch |
只下载,不合并 | 想“先看看再合并” |
pull |
fetch + merge | 信任远程,直接同步 |
| 命令 | 功能 | 常用参数 | 示例 |
|---|---|---|---|
git tag |
列出所有tag | - | git tag |
git tag -l "v1.*" |
模糊搜索tag | -l |
git tag -l "v1.*" |
git tag v1.0.0 |
创建轻量tag | - | git tag v1.0.0 |
git tag -a v1.0.0 -m "msg" |
创建附注tag(推荐) | -a(annotated)-m |
git tag -a v1.0.0 -m "发布 1.0.0" |
git tag -a v1.0.0 |
给历史commit打tag | - | git tag -a v1.0.0 abc1234 |
git show v1.0.0 |
查看tag详情 | - | git show v1.0.0 |
git push origin v1.0.0 |
推送单个tag | - | git push origin v1.0.0 |
git push origin --tags |
推送所有tag | --tags |
git push origin --tags |
git tag -d v1.0.0 |
删除本地tag | -d |
git tag -d v1.0.0 |
git push origin --delete v1.0.0 |
删除远程tag | - | git push origin --delete v1.0.0 |
git checkout v1.0.0 |
切到指定tag(detached HEAD) | - | git checkout v1.0.0 |
轻量tag只是个名字,附注tag包含打tag者的信息、日期和说明。发版推荐用附注tag。
| 命令 | 功能 | 示例 |
|---|---|---|
git flow init |
初始化Git Flow | git flow init |
git flow feature start |
开始feature | git flow feature start login |
git flow feature finish |
完成feature | git flow feature finish login |
git flow feature publish |
发布feature到远程 | git flow feature publish login |
git flow feature pull |
拉取远程feature | git flow feature pull origin login |
git flow release start |
开始release | git flow release start v1.0.0 |
git flow release finish |
完成release | git flow release finish v1.0.0 |
git flow hotfix start |
开始hotfix | git flow hotfix start pay-bug |
git flow hotfix finish |
完成hotfix | git flow hotfix finish pay-bug |
| 命令 | 功能 | 示例 |
|---|---|---|
git worktree add |
添加工作目录 | git worktree add ../feature-branch feature/x |
git worktree list |
列出所有工作目录 | git worktree list |
git worktree remove |
删除工作目录 | git worktree remove ../feature-branch |
git worktree prune |
清理无效工作目录 | git worktree prune |
| 命令 | 功能 | 示例 |
|---|---|---|
git submodule add |
添加子模块 | git submodule add |
git submodule init |
初始化子模块 | git submodule init |
git submodule update |
更新子模块 | git submodule update --init --recursive |
git submodule status |
查看子模块状态 | git submodule status |
| 命令 | 功能 | 示例 |
|---|---|---|
git archive --format=zip HEAD > out.zip |
打包当前版本 | git archive --format=zip HEAD > release.zip |
git archive --format=tar v1.0.0 |
打包指定tag | git archive --format=tar v1.0.0 > v1.0.0.tar |
| 命令 | 功能 | 示例 |
|---|---|---|
git bisect start |
开始二分查找 | git bisect start |
git bisect bad |
标记当前为坏版本 | git bisect bad |
git bisect good |
标记某commit为好版本 | git bisect good v1.0.0 |
git bisect reset |
退出二分查找 | git bisect reset |
git bisect 是定位“哪个commit引入bug”的神器——用二分查找,比逐个commit试快100倍。
| 命令 | 功能 | 示例 |
|---|---|---|
git grep "pattern" |
在工作区搜索 | git grep "TODO" |
git grep -n "pattern" |
显示行号 | git grep -n "TODO" |
git grep "pattern" HEAD~5 |
在指定commit搜索 | git grep "function_name" v1.0.0 |
下面这段直接复制到终端运行,配置就生效了:
# log 美化 git config --global alias.lg "log --graph --pretty=format:'%h -%d %s (%cr) <%an>' --abbrev-commit --all" # 简洁 log git config --global alias.l "log --oneline --graph -10" # 全部 add + 状态 git config --global alias.st "status" # 简洁 status git config --global alias.ss "status -s" # 全部 add git config --global alias.a "add -A" # 带信息的 commit git config --global alias.cm "commit -m" # 撤销最后一次 commit(保留改动) git config --global alias.undo "reset --soft HEAD~1" # 查看所有分支 git config --global alias.br "branch -a" # 看远程 git config --global alias.rv "remote -v" # diff 工具 git config --global alias.d "diff" git config --global alias.dc "diff --cached"
配好之后:
# 等价 git log --graph --pretty=format:'%h -%d %s (%cr) <%an>' --abbrev-commit --all git lg # 简洁 status git ss # 看所有分支 git br # 撤销最后一次 commit(保留改动) git undo
配置一次,终身受用。建议把上面那段命令保存到笔记里,新机器上直接复制粘贴。
# 推送到当前分支的上游 git config --global alias.ps "push" # 拉取并 rebase git config --global alias.pl "pull --rebase" # 看所有 stash git config --global alias.sl "stash list" # 看 stashes 详情 git config --global alias.ss2 "stash show -p" # 找到删除的文件 git config --global alias.df "diff --diff-filter=D --summary" # 今天的 commit git config --global alias.today "log --since=midnight --author=$(git config user.name) --oneline" # 我上周的 commit git config --global alias.week "log --since='1 week ago' --oneline"
# 1. 配置身份 git config --global user.name "Your Name" git config --global user.email "your@email.com" # 2. 配置默认分支 git config --global init.defaultBranch main # 3. 配置编辑器 git config --global core.editor vim # 4. 开启颜色 git config --global color.ui auto # 5. (可选)配 SSH Key ssh-keygen -t ed25519 -C "your@email.com" cat ~/.ssh/id_ed25519.pub # 复制到 Gitee/GitHub
# 1. clone 远程仓库 git clone git@github.com:user/repo.git cd repo # 2. 创建 feature 分支 git switch -c feature/awesome-feature # 3. 开发 + 提交 echo "code" > app.py git add . git commit -m "feat: add awesome feature" # 4. 推送到远程 git push -u origin feature/awesome-feature # 5. 在平台创建 PR # 6. 团队 review + 合并
# 标准流程(推荐) git fetch origin git rebase origin/master # 或 git merge origin/master # 或一条命令(已配置 pull.rebase = true) git pull --rebase
# 1. 冲突时先看哪些文件冲突 git status # 2. 编辑冲突文件(删 <<<<<<< ======= >>>>>>>) # 3. 标记解决 git add# 4. 完成合并/rebase git commit # merge 时 git rebase --continue # rebase 时 # 5. 验证 git status # 不应该有 Unmerged paths
# 1. 创建 hotfix 分支 git switch -c hotfix/critical-bug # 2. 修复 + 提交 echo "fix" > bug.py git add . git commit -m "hotfix: critical bug" # 3. 推送 git push -u origin hotfix/critical-bug # 4. 创建 PR + 快速 review # 5. 合并到 master + 打 tag git switch master git merge --no-ff hotfix/critical-bug git tag v1.0.1 git push origin v1.0.1
# 1. 切到 master git switch master # 2. 拉取最新 git pull --rebase # 3. 打 tag git tag -a v1.0.0 -m "Release 1.0.0" # 4. 推送 tag git push origin v1.0.0
# 撤销工作区修改 git restore# 取消暂存 git restore --staged # 修改最后一次 commit 信息 git commit --amend # 撤销最后一次 commit(保留改动) git reset --soft HEAD~1 # 撤销最后一次 commit(丢弃改动) git reset --hard HEAD~1 # 撤销已 push 的 commit git revert
# 1. 查所有操作记录 git reflog # 2. 找回去 git reset --hard
"这么多命令,平时到底用多少?"
| 场景 | 必用命令(5个以内) | 频率 |
|---|---|---|
| 日常开发 | status、add、commit、push、pull |
⭐⭐⭐⭐⭐ |
| 查看历史 | log、diff、show |
⭐⭐⭐⭐ |
| 分支开发 | branch、switch、merge |
⭐⭐⭐⭐ |
| 冲突解决 | status、add、commit |
⭐⭐⭐ |
| 团队协作 | remote、fetch、pull --rebase |
⭐⭐⭐⭐ |
| 发版 | tag、push --tags |
⭐⭐ |
| 紧急修复 | switch -c hotfix/、merge、tag |
⭐⭐ |
| 事故回滚 | revert、reset、reflog |
⭐ |
日常工作90%只用16个核心命令。其他的是“进阶武器”,用到再查本手册。
分3层。
| 层级 | 数量 | 记忆方法 |
|---|---|---|
| 核心16个 | 16 | 每天用,自然记住 |
| 常用30个 | 30 | 反复查本手册 |
| 不常用50个 | 50+ | 知道有,用到再查 |
核心16个(必背):
config, init, clone, status, add, commit, log, diff, branch, switch, merge, remote, fetch, pull, push, reflog
配别名。参考第11节,配一次终身受用。
reset --hard、push --force、clean -fd。
这3个都是不可逆的操作。执行前先问自己三个问题:真的不需要了吗?有没有备份?reflog能找回来吗?
用 git help 或 man git。
# 查某个命令的帮助 git help commit # 或 git commit --help # 或 man git-commit # 查所有命令列表 git help -a # 查常用工作流 git help workflows
有,但不推荐。
| 工具 | 平台 | 说明 |
|---|---|---|
| GitHub Desktop | Windows/Mac | 简单直观 |
| Sourcetree | Windows/Mac | 功能强大 |
| GitKraken | 全平台 | 颜值高 |
| VS Code | - | 内置Git集成 |
| IntelliJ IDEA | - | JetBrains全家桶 |
但要注意:工具能“上手”但不能“深入”。想真正懂Git,还是得用命令行。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8