ZZ — Git 速查表

ZZ --- Git 速查表

速查卡片,一图胜千言 ------ 忘了命令怎么用?翻这里。

三棵树

操作对照

reset 三种模式

rebase vs merge


三棵树模型(一句话版)

是什么 类比
工作区 你能直接看到的文件夹 桌面
暂存区(index) git add 之后、还没提交的东西 购物车
仓库(HEAD) git commit 之后的快照 已下单的记录

初始设置(3 条命令)

命令 干什么
git config --global user.name "你的名字" 告诉 Git 你是谁
git config --global user.email "你的邮箱" 告诉 Git 你的邮箱
git initgit 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 当前提交和上一条的差异

撤销决策表

先走决策流程,再查对应命令:

text 复制代码
想撤销?
├─ 只改了工作区(没 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 pull fetch + 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 记录
删一条 stash git 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 文件名 逐行显示提交者和时间
二分找 bug git bisect start 自动 halves 法定位问题提交
误删了没 add 的文件 git clean -fd 清除未跟踪文件(先 git clean -fdn 预览)

容易混淆的命令对比

对比 区别
git reset vs git revert reset 是回退指针(改历史),revert 是新增一个反向提交(不改历史)
git merge vs git rebase merge 保留分叉,rebase 把历史拉成一条线
git fetch vs git pull fetch 只下载,pull = fetch + merge
git restore vs git reset restore 恢复文件内容,reset 恢复提交指针
git restore vs git checkout -- 功能一样,restore 是新版拆出来的,更明确
git branch -d vs git branch -D 小写检查是否合并,大写强制删
git stash pop vs git stash apply pop 恢复并删 stash,apply 只恢复不删
git reset --soft vs --mixed vs --hard soft 只动 HEAD,mixed 动 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 --merged grep -v main

高级速查

命令 白话
git worktree add ../新路径 分支名 同一仓库同时检出多个分支到不同目录
git worktree list 看当前有哪些 worktree
git worktree remove 路径 删掉一个 worktree
.git/hooks/ 里的脚本 提交前自动跑检查(pre-commit 等)
git commit --amend 改最近一次提交(内容或说明)
git rebase -i HEAD~3 交互式整理最近 3 条提交(合并、改顺序、改说明)

git 2.43.0 验证。演示身份:Ada Example <ada@example.com>

参考资料:Pro Git 中文 | Git 文档 | 术语

写在最后:

这个课程是专门写给外甥的, 他今年9月份就上大学了,相对他说, 大学里人生会打开新的一页,那里有更广阔的世界,也有更多要自己做主的时刻------学习、交友、选择、起起落落,都会一点点变成你自己的故事。

不必急着把一切都想明白。先把身体照顾好,把该做的事一件件做好,遇到不懂的就问,走错了就改。真正重要的,不是一开始就完美,而是愿意认真过每一天,并在跌倒后重新站起来。

愿你入学顺利,心有所向,脚踏实地,遇见好人,也成为更好的自己。

相关推荐
Json____2 小时前
五金制品行业-企业官网源码
java·大数据·数据库·企业站·wwwoop.com
黄焖鸡能干四碗3 小时前
信息安全保障方案(Word文件)
大数据·网络·人工智能·架构·区块链
大东(AIP内容运营专员)3 小时前
我用 OPC 模式运营一年多的AI产品
大数据·人工智能
roman_日积跬步-终至千里5 小时前
【Spark与SQL网关(1)】Spark 提交模式与 Spark Thrift Server:到底在“提交”什么
大数据·sql·spark
汽车仪器仪表相关领域5 小时前
SIRIUS R1DB/R2DB便携式一体化数据采集系统
大数据·人工智能·功能测试·深度学习·压力测试
早安试言5 小时前
git使用
git
燐妤6 小时前
梦绘片场 ProjectDream故事总纲场景剧本篇:从项目到成片的 AI 漫剧工作台
人工智能·git·ai·项目开发
Elasticsearch6 小时前
跳过有状态的 OTel Collector:Elasticsearch 9.5 原生存储两种指标时间类型
elasticsearch
JackieDYH14 小时前
Git 与 GitHub 新电脑配置指南(从零开始)
git·github·工具·使用教程