🌿
Git
从提交与分支到 rebase、冲突处理与团队工作流,版本控制融会贯通。
- 01版本控制与 Git:从"文件名后缀"到分布式仓库为什么需要版本控制、集中式与分布式的本质区别、Git 的设计哲学与首次配置
- 02三区模型:工作区、暂存区与仓库Git 的核心心智模型,add / commit / status / diff 与文件的四种状态
- 03提交历史:log、show、blame 与提交信息规范git log 的各种姿势、定位一行代码的来历、写出可被检索的提交信息
- 04撤销与回退:restore、reset 三模式与 revert改错了怎么救——按"改动在哪个区"选对撤销命令,以及 reset 与 revert 的本质区别
- 05分支基础:branch、switch 与两种合并分支为什么这么便宜、HEAD 的作用、fast-forward 与三方合并的区别
- 06冲突处理:制造、读懂、解决什么情况会冲突、冲突标记怎么读、三方版本如何取舍、abort 与善后
- 07rebase:变基原理、与 merge 的取舍、黄金法则变基如何"重放"提交、为什么哈希会变、rebase 冲突里 ours/theirs 为什么反了
- 08交互式 rebase:把凌乱的提交整理成能见人的历史squash / fixup / reword / edit / drop / reorder,以及 --autosquash 工作流
- 09stash 与 cherry-pick:现场保存与跨分支摘提交临时收起工作现场、stash 栈的完整操作,以及把单个提交搬到另一条分支
- 10远程仓库:clone、fetch、pull、push 与跟踪分支远程跟踪分支到底是什么、fetch 与 pull 的区别、push 被拒绝时怎么办
- 11标签与版本发布:轻量标签、附注标签与语义化版本轻量标签和附注标签的区别、如何给历史提交补打标签、用语义化版本号管理发布
- 12.gitignore 与文件管理:忽略规则、git rm/mv、clean 与 skip-worktree如何写 .gitignore 规则与例外、git rm/git mv 的正确姿势、git clean 清理与 skip-worktree 本地覆盖
- 13Git 对象模型:blob、tree、commit 与内容寻址.git 目录里到底存了什么、三种对象如何串成快照、SHA-1 内容寻址为何高效、引用与 HEAD 的本质
- 14reflog 与数据找回:几乎什么都能救回来reflog 如何记录 HEAD 的每一次移动、用 reflog 找回 reset 掉的提交与误删分支、git fsck 兜底悬空对象
- 15团队协作工作流:Feature Branch、GitFlow 与 Fork/PR从分支模型到 GitFlow、GitHub Flow、Trunk-Based,以及 Fork+PR 协作机制的本地完整模拟
- 16hooks 与自动化:用钩子把团队规范焊死在提交流程里客户端钩子机制、pre-commit 与 commit-msg 实战、husky + lint-staged 工程化方案
- 17submodule 与 monorepo:子模块机制、大仓库优化与多仓取舍git submodule 的工作机制与常见坑(游离 HEAD、忘记递归克隆)、subtree 简介、sparse-checkout 与 partial clone 在大仓库的用法、monorepo 与多仓库的取舍对比
- 18实战演练:串起全课的一次完整协作从 0 演练一次完整协作流程——建仓、feature 分支、并行冲突、rebase 解决、交互式整理、打 tag 发布、reflog 自救