ZZ — Git 速查表
ZZ — Git 速查表速查卡片一图胜千言 —— 忘了命令怎么用翻这里。三棵树操作对照reset 三种模式rebase vs merge三棵树模型一句话版树是什么类比工作区你能直接看到的文件夹桌面暂存区indexgit add之后、还没提交的东西购物车仓库HEADgit commit之后的快照已下单的记录初始设置3 条命令命令干什么git config --global user.name 你的名字告诉 Git 你是谁git config --global user.email 你的邮箱告诉 Git 你的邮箱git init或git clone 地址创建仓库从零开始 or 从远程拉日常命令速查按场景分组我刚改了代码想提交步骤命令白话看看改了啥git status哪些文件动了、哪些还没 add看具体改动git diff工作区和暂存区的差异挑文件放进购物车git add 文件名把指定文件加到暂存区全部放进购物车git add .当前目录下所有改动一起加提交git commit -m 说明把购物车结账变成一条记录改完再补一句git commit --amend -m 新说明修改最近一次提交的说明我想看历史命令白话git log --oneline每条提交一行简洁git log --oneline --graph带分支图的提交历史git log -5只看最近 5 条git diff HEAD~1当前提交和上一条的差异撤销决策表先走决策流程再查对应命令想撤销 ├─ 只改了工作区没 add → git restore 文件名 ├─ 已经 add 了没 commit │ ├─ 想保留改动 → git restore --staged 文件名取消暂存文件还在 │ └─ 不想要了 → git restore --staged 文件名 git restore 文件名 ├─ 已经 commit 了没推送 → git reset --soft HEAD~1撤销提交改动还在暂存区 │ ├─ 想改完重新提交 → git reset --soft HEAD~1 │ └─ 彻底不要 → git reset --hard HEAD~1危险改动全丢 └─ 已经推送了 → git revert 哈希生成一条新提交来抵消安全命令撤销什么改动还在吗安全等级git restore 文件工作区改动不在了安全git restore --staged 文件暂存取消 add在回到工作区安全git reset --soft HEAD~1最近一次提交在回到暂存区较安全git reset --mixed HEAD~1最近一次提交在回到工作区较安全git reset --hard HEAD~1最近一次提交全没了危险git revert 哈希指定提交抵消掉但历史保留最安全分支操作速查场景命令白话看所有分支git branch -a列出本地和远程分支新建分支git branch 分支名只创建不切换切换分支git switch 分支名跳过去新建切换git switch -c 分支名一步到位合并分支git merge 分支名把目标分支合到当前分支变基git rebase 分支名把当前分支嫁接到目标分支后面删本地分支git branch -d 分支名删已经合并的分支强删本地分支git branch -D 分支名不管合没合并都删摘一个提交git cherry-pick 哈希只拿某一条提交过来merge vs rebase 一句话merge保留完整历史会产生一个合并提交rebase历史更干净但会改写提交哈希别在公共分支上用远程操作速查场景命令白话看远程地址git remote -v查看关联的远程仓库添加远程git remote add origin 地址给远程仓库起个名拉取远程信息git fetch只下载不改工作区拉取合并git pullfetch merge一把梭推送git push把本地提交推上去首次推送git push -u origin 分支名推并设置上游跟踪强推安全版git push --force-with-lease强推但有确认比--force安全临时保存速查场景命令白话临时存起来git stash工作区和暂存区改动先藏起来带说明存git stash push -m 说明给这堆改动起个名看藏了什么git stash list列出所有 stash拿回来git stash pop恢复最近一条并删除拿回来但保留git stash apply恢复但不删 stash 记录删一条 stashgit stash drop删最近一条 stash标签命令白话git tag v1.0给当前提交打轻量标签git tag -a v1.0 -m 说明打附注标签带说明的git tag列出所有标签git push origin v1.0把标签推到远程紧急情况速查紧急场景命令白话搞崩了想找回去git reflog查所有 HEAD 移动记录找到哈希就能恢复恢复到某条记录git reset --hard 哈希配合 reflog 用回到那个状态哪行代码谁写的git blame 文件名逐行显示提交者和时间二分找 buggit bisect start自动 halves 法定位问题提交误删了没 add 的文件git clean -fd清除未跟踪文件先git clean -fdn预览容易混淆的命令对比对比区别git resetvsgit revertreset 是回退指针改历史revert 是新增一个反向提交不改历史git mergevsgit rebasemerge 保留分叉rebase 把历史拉成一条线git fetchvsgit pullfetch 只下载pull fetch mergegit restorevsgit resetrestore 恢复文件内容reset 恢复提交指针git restorevsgit checkout --功能一样restore 是新版拆出来的更明确git branch -dvsgit branch -D小写检查是否合并大写强制删git stash popvsgit stash applypop 恢复并删 stashapply 只恢复不删git reset --softvs--mixedvs--hardsoft 只动 HEADmixed 动 HEAD暂存区hard 全动取证与调试速查命令白话git reflog所有操作的时间线救命神器git bisect start/end/good/bad二分法找 bug自动帮你定位是哪个提交引入的git blame 文件名看每一行是谁在哪个提交写的git log --all --oneline --graph全局提交图一目了然git show 哈希查看某个提交的详细改动清理速查命令白话git clean -fdn预览哪些未跟踪文件会被删干跑不删git clean -fd真删清除未跟踪的文件和目录git gc垃圾回收压缩仓库体积git prune删掉不可达的对象git branch --mergedgrep -v main高级速查命令白话git worktree add ../新路径 分支名同一仓库同时检出多个分支到不同目录git worktree list看当前有哪些 worktreegit worktree remove 路径删掉一个 worktree.git/hooks/里的脚本提交前自动跑检查pre-commit 等git commit --amend改最近一次提交内容或说明git rebase -i HEAD~3交互式整理最近 3 条提交合并、改顺序、改说明以git 2.43.0验证。演示身份Ada Example adaexample.com。参考资料Pro Git 中文 | Git 文档 | 术语写在最后:这个课程是专门写给外甥的, 他今年9月份就上大学了相对他说, 大学里人生会打开新的一页,那里有更广阔的世界也有更多要自己做主的时刻——学习、交友、选择、起起落落都会一点点变成你自己的故事。不必急着把一切都想明白。先把身体照顾好把该做的事一件件做好遇到不懂的就问走错了就改。真正重要的不是一开始就完美而是愿意认真过每一天并在跌倒后重新站起来。愿你入学顺利心有所向脚踏实地遇见好人也成为更好的自己。