git init初始化仓库git clone <url>克隆仓库git config --global user.name "Name"设置用户名git config --global user.email "e@x.com"设置邮箱git status查看状态git log --oneline --graph美观的提交历史git diff未暂存改动git diff --staged已暂存改动git show <commit>查看提交详情git add <path>暂存文件git add -p逐块暂存git commit -m "msg"提交已暂存git commit --amend修改最近一次提交git reset <file>取消暂存git restore <file>丢弃本地未提交修改git branch列出分支git switch <name>切换分支git switch -c <name>创建并切换分支git merge <branch>合并到当前分支git rebase <branch>rebase 到目标git branch -d <name>安全删除分支git branch -D <name>强制删除分支git remote -v列出远程仓库git remote add origin <url>添加远程仓库git push -u origin main推送并跟踪git pull --rebase拉取并 rebasegit fetch --all --prune抓取所有远程git reset --soft HEAD~1撤销最近一次(保留改动)git reset --hard HEAD~1撤销最近一次提交(保留改动)git revert <commit>安全撤销提交git stash暂存未提交修改git stash pop恢复 stashgit reflog恢复日志(reflog)关于 Git 速查表
Git 速查表汇集日常版本控制最常用的命令与参数范例,从仓库初始化、分支切换、暂存提交到变基、cherry-pick、回滚与子模块操作一应俱全。每条命令都配有简明说明与典型用法,新手可以快速找到正确写法,老手也能随时回顾冷门参数。页面按场景分组,支持浏览器内关键词检索,省去反复打开文档的麻烦。所有内容静态呈现,离线也能查阅,是写代码间隙随手确认 Git 语法的实用备忘,也适合作为团队新人上手分布式版本控制的入门索引,避免每次都要翻官方手册。团队协作时可把它当作速查主页,新人对照练习能更快熟悉日常的高频命令组合;页面按场景分组并支持浏览器内检索,离线也能查阅,省去反复翻官方手册,也能统一团队内部的常用命令写法,降低协作时的沟通与 review 成本。
撤销类命令按作用范围分成三个层级,弄清这个层级关系比记住命令本身更重要。只改工作区文件、同时改工作区与暂存区、以及回退到某次提交,三者影响的范围依次扩大,而回退范围越大越容易波及他人已经拉取的提交。因此在执行前先自问「我到底要撤销哪一层」,多数误操作都能在这一步被拦住。
合并与变基的取舍取决于分支是否已共享。变基把提交重新排列成一条直线,读起来清爽,但它会改写提交标识,对已经推送到远端并被他人拉取的分支执行变基,会让其他人拉到重复或断裂的历史;合并则保留分叉点,历史略显杂乱但完全可追溯。因此未被共享的本地分支适合变基,公共分支应以合并为主。
操作日志是最后的兜底手段,值得单独记住。多数「以为已经丢失」的提交其实仍在日志中可查,只要没有触发自动清理,就能据其找回。因此当你误执行了回退或重置,第一件事应当是查看操作日志而不是继续在上面叠加新命令,越早停手,找回的成功率越高。
冲突的处理方式决定了后续是否还会反复出现同样的冲突。逐处手工解决能彻底消除分歧,但若同一处反复冲突,通常是两边在改动同一段逻辑,此时更合理的做法是先与另一方对齐设计再合并,而不是一次次地按自己的理解解决。把冲突当作信号而不是障碍,能避免把矛盾累积到更晚的阶段。
提交信息的规范程度直接影响回溯效率。一条能说明「为什么改」的信息,在几个月后排查问题时价值远高于只说「修改了某文件」;而把无关改动混在一次提交里,会让回退变成一件需要拆解的事。因此保持提交粒度单一、信息说明动机,是让备忘真正有用的前提,而不仅是格式上的讲究。
最后,备忘的效力受版本差异限制,不能当作万能对照表。同一类操作在不同版本中的参数与默认行为可能已经变化,更新日志往往是查找这类差异最直接的来源。因此在遇到「按备忘操作却报错」的情况时,应先核对版本文档,而不是反复尝试旧命令,否则容易在错误的路径上消耗时间。
实现原理
命令速查的价值在于记住「哪些操作不可逆」。三条最常被误用的:重置到某个提交并丢弃工作区改动是不可恢复的(且不进引用日志);改写历史会改变提交标识,已推送的分支上使用会造成他人本地分叉;对单个文件做检出式回退会覆盖当前改动且同样不进引用日志。
reset --soft / --mixed / --hard--soft 保留改动在暂存区|--mixed 保留在工作区|--hard 丢弃且不进引用日志,无法恢复使用方法
- 打开「Git 速查表」
- 粘贴待处理的文本
- 根据需要调整输出选项
- 点击「处理」按钮,结果实时显示
- 复制或导出结果
使用场景
- 撤销操作 — 快速查 reset、revert、checkout 的区别,安全回退误提交。
- 分支管理 — 对照分支创建、切换、删除与合并命令,理清分支工作流。
- 找回提交 — 用 reflog 相关命令找回被 reset 或误删的提交记录。
- 暂存改动 — 查 stash 的保存、查看、恢复用法,临时切任务不丢工作区。
- 团队规范 — 把速查表作为团队统一的 Git 操作参考,减少误操作。
常见问题
reset 的 soft、mixed、hard 有何区别?
soft 只移动 HEAD 保留暂存区与工作区;mixed(默认)重置暂存区但保留改动;hard 会一并丢弃工作区改动,使用前务必确认。
revert 和 reset 该用哪个?
已推送到远程的提交建议用 revert,它新增一个反向提交不改写历史;reset 改写历史,适合仅在本地未分享的提交。
rebase 会不会丢提交?
正常 rebase 不丢提交,但会改写提交哈希;若过程出错,可用 reflog 找回原来的 HEAD 位置。
这些命令在 Windows 上能用吗?
能。命令本身跨平台一致,区别主要在 shell;本速查表的命令在 Git Bash、PowerShell 中都适用。
想美化提交信息怎么办?
速查表帮你记命令;若需要规范地写 commit message,可参考约定式提交(Conventional Commits)规范并配合本站相关工具。
最常用的 git 命令有哪些?
本速查页汇总 clone / add / commit / push / pull / branch / checkout / merge / log 等日常命令,按场景分组,新手可直接照抄,老手用来回忆参数。
如何撤销最近一次提交(git undo commit)?
尚未推送时可用 git reset --soft HEAD~1 撤回提交但保留改动;已推送则需 git revert 生成反向提交,避免改写公共历史。
What are the most common git commands?
This cheat sheet groups everyday commands — clone / add / commit / push / pull / branch / checkout / merge / log — by scenario, so beginners can copy them and pros can recall flags.
How do I undo the last git commit?
If not pushed, git reset --soft HEAD~1 undoes the commit while keeping changes; if already pushed, use git revert to create an inverse commit and avoid rewriting shared history.
git reset --hard 和 git revert 怎么选?
已推送到远端的提交用 revert(生成反向提交,安全可追溯);本地未推送的用 reset --hard(直接抹掉,干净)。对共享分支执行 reset --hard 后强推,会让协作者的历史错乱——这是最常见的团队事故之一。
git pull 和 git fetch 有什么区别?
fetch 只把远端更新下载到本地引用(origin/main),不改动你的工作区,安全;pull = fetch + merge,会直接合并进当前分支,可能产生冲突或意外合并提交。养成「先 fetch 看一眼再决定怎么合」的习惯,比无脑 pull 稳得多。
git stash 的内容找不到了怎么恢复?
stash 没有删除前不会真正消失:git stash list 看栈里还有没有;被 drop 掉的可以通过 git fsck --lost-found 找到悬空的 commit 再 cherry-pick。频繁 stash 容易忘记栈里有什么,给 stash 加描述(git stash push -m)是好习惯。