Git 命令速查
60 条高频 Git 命令按场景分组,命令与中文说明双向搜索。
按场景浏览或搜索:命令原文与中文说明双向匹配。<尖括号>是占位符,替换成实际值后直接粘贴到终端。
基础操作9 条
| git init | 在当前目录初始化一个新仓库 |
| git clone <url> | 克隆远程仓库到本地 |
| git status | 查看工作区与暂存区状态 |
| git add <file> | 把文件改动加入暂存区(-A 全部) |
| git commit -m "msg" | 提交暂存区的改动 |
| git log | 查看提交历史(--oneline 单行显示) |
| git diff | 查看工作区相对暂存区的差异 |
| git mv <old> <new> | 移动/重命名文件并登记改动 |
| git rm <file> | 删除文件并登记(--cached 仅解除跟踪) |
分支13 条
| git branch | 列出本地分支(-a 含远程,-r 仅远程) |
| git branch <name> | 创建新分支(不切换) |
| git switch <name> | 切换分支(新命令,语义更清晰) |
| git switch -c <name> | 创建并切换到新分支 |
| git checkout <name> | 切换分支或还原文件(老命令) |
| git checkout -b <name> | 创建并切换新分支(老写法) |
| git merge <name> | 把指定分支合并进当前分支 |
| git merge --abort | 合并冲突时放弃本次合并,恢复现场 |
| git rebase <base> | 把当前分支变基到目标之上(线性历史) |
| git rebase --continue | 解决冲突后继续变基 |
| git cherry-pick <sha> | 把单个提交摘到当前分支 |
| git branch -d <name> | 删除已合并的分支(-D 强制) |
| git worktree add ../path <branch> | 同一仓库检出多个工作目录,并行开发互不干扰 |
远程协作9 条
| git remote -v | 查看已配置的远程仓库 |
| git remote add origin <url> | 添加名为 origin 的远程仓库 |
| git fetch | 拉取远程更新但不合并(--prune 顺带清理已删分支) |
| git pull | 拉取并合并(= fetch + merge) |
| git pull --rebase | 拉取并变基,避免无意义的 merge 提交 |
| git push | 推送本地提交到远程 |
| git push -u origin <branch> | 首次推送并建立跟踪关系 |
| git push --force-with-lease | 安全强推:远程有他人新提交时拒绝(比 --force 安全) |
| git push origin --delete <branch> | 删除远程分支 |
暂存与提交9 条
| git stash | 把未提交改动暂存起来(pop 恢复,list 查看) |
| git stash pop | 恢复最近一次暂存并删除该记录 |
| git stash apply <n> | 恢复指定暂存但保留记录 |
| git commit --amend | 修补上一次提交(改信息或补文件;已推送需强推) |
| git commit --fixup <sha> | 标记修正提交,配合 rebase --autosquash 自动归位 |
| git restore <file> | 丢弃工作区改动(--staged 撤销暂存) |
| git reset HEAD <file> | 把文件移出暂存区(不丢工作区改动) |
| git clean -fd | 删除未跟踪的文件与目录(-n 先预览) |
| git bisect start | 二分定位引入 bug 的提交(start/bad/good/reset) |
撤销与回退6 条
| git revert <sha> | 生成一条反向提交抵消指定提交(安全,可推送) |
| git reset --soft HEAD~1 | 撤销上次提交,改动保留在暂存区 |
| git reset --mixed HEAD~1 | 撤销上次提交,改动保留在工作区(默认) |
| git reset --hard HEAD~1 | 撤销上次提交并丢弃全部改动(危险,不可恢复) |
| git reflog | 查看 HEAD 移动历史,找回"消失"的提交 |
| git checkout <sha> -- <file> | 把单个文件还原到指定提交的版本 |
标签5 条
| git tag | 列出全部标签 |
| git tag v1.0.0 | 创建轻量标签 |
| git tag -a v1.0.0 -m "msg" | 创建附注标签(发布推荐) |
| git push origin v1.0.0 | 推送单个标签(--tags 推全部) |
| git tag -d v1.0.0 | 删除本地标签 |
查看与排查6 条
| git show <sha> | 查看某次提交的完整改动 |
| git blame <file> | 逐行查看最后修改者与提交 |
| git log --graph --oneline --all | 图形化查看全部分支历史 |
| git log -p <file> | 查看文件的修改历史与逐次差异 |
| git diff --staged | 查看暂存区与上次提交的差异 |
| git shortlog -sn | 按提交数统计贡献者 |
配置与进阶6 条
| git config --global user.name "x" | 设置全局用户名(user.email 同理) |
| git config --global init.defaultBranch main | 新仓库默认分支改为 main |
| git config alias.co checkout | 配置命令别名(git co 即 checkout) |
| git credential-manager | 凭据助手管理 HTTPS 记住的账号 |
| git describe --tags | 输出最近标签+提交数+短哈希,构建版本号常用 |
| git archive --format=zip -o out.zip HEAD | 把某次提交导出为压缩包(不含 .git) |
使用说明
这个工具解决什么问题
Git 命令靠背是不现实的——rebase 的参数、reflog 找回提交、cherry-pick 摘提交,用的时候总要想一下。这个速查表收了 60 条高频命令,按基础/分支/远程/暂存/撤销/标签/排查/配置八个场景分组,每条带一句中文说明,讲清「干什么 + 和近亲命令差在哪」。
核心能力
双向搜索:按命令片段搜(rebase、amend),也按中文意图搜(「撤销」「强推」),都是即时本地过滤。
场景分组:不记得命令名时按组顺着找;「撤销与回退」组把 revert/reset 三档/reflog 放在一起,危险等级一目了然。
差异注解:易混命令写明关键差异——pull 与 pull --rebase、push --force 与 --force-with-lease、stash pop 与 apply。
使用建议
新团队可以把「配置与进阶」组当初始化清单:defaultBranch、user.name/email、常用 alias。遇到「提交不见了」先搜 reflog。想系统学的话,把每组命令在测试仓库里各跑一遍,比背文档快。
常见问题
命令里的尖括号是什么意思?
<file>、<name>、<sha> 这类尖括号是占位符,替换成你的实际值(分支名、文件名、提交哈希)。命令本身可以整条复制到终端再改。
reset --soft / --mixed / --hard 到底差在哪?
三者都把 HEAD 挪回上一笔,区别是改动留在哪:--soft 留在暂存区(改完重新提交即可)、--mixed 留在工作区(默认,要重新 add)、--hard 直接丢弃(危险,找不回)。速查表的「撤销与回退」组里三条并排放着,方便对照。
提交错了想反悔,用 revert 还是 reset?
已推送到公共分支用 revert(生成一条反向提交,历史干净可推送);只有自己看得见的本地分支才考虑 reset。搜「撤销」可以直接过滤出这两条。