太好了,这一步非常关键。 很多人能用 Git,但真正在团队协作或大型项目里完全掌控版本流转的开发者很少。 下面我给你准备一份 📘《Git 高级用法与全命令手册》—— 涵盖命令体系 + 实战语义 + 深层原理 + 可视化心智模型。
⸻
🧩 Git 高级用法与全命令手册
⸻
🧭 第一章:Git 本质认知
在理解命令前,要先明白 Git 到底是“干什么”的。
🔹 Git 是什么?
Git 是一个内容寻址的有向无环图(DAG)存储系统。
• 每个 commit 是一个节点,指向它的父节点;
• 每个节点指向一棵树(项目快照);
• 每个对象(commit / tree / blob)都有一个唯一 SHA1 哈希。
即:
CommitA --> CommitB --> CommitC (HEAD)指向当前工作分支
⸻
🧠 第二章:Git 基本工作区概念
名称 位置 说明 工作区(Working Directory) 文件系统 你编辑代码的地方 暂存区(Index / Stage) .git/index 已 add 的文件列表 本地仓库(Local Repo) .git/objects 已 commit 的版本历史 远程仓库(Remote Repo) GitLab / GitHub 同步协作副本
数据流动路径:
编辑 → git add
→ git commit
→ git push
⸻
⚙️ 第三章:核心命令全景图(分类索引)
类别 常用命令 初始化与配置 git init
, git config
状态与比较 git status
, git diff
, git log
文件追踪 git add
, git rm
, git mv
提交历史 git commit
, git reset
, git revert
分支与合并 git branch
, git checkout
, git merge
, git rebase
远程操作 git fetch, git pull, git push, git remote 标签与版本 git tag, git show, git describe 暂存与修复 git stash, git cherry-pick, git bisect 清理与优化 git gc, git fsck, git prune
⸻
🔀 第四章:四大“灵魂命令”的深度理解
⸻
🧩 1️⃣ git fetch
拉取远程更新,但不合并。
• 只是把远程分支更新到 .git/refs/remotes/origin/xxx
• 不会改动你的本地代码
git fetch origin main
🌰 实例:
本地 main: A--B 远程 origin/main: A--B--C
执行 git fetch 后: 本地 main: A--B origin/main: A--B--C (更新了)
📘 用法:
git fetch --all # 拉取所有远程更新
git fetch origin feature # 仅拉取某分支
⸻
🔁 2️⃣ git merge
把另一个分支的历史合并进当前分支。
git merge origin/main
会生成一个新的合并提交(merge commit):
D (merge)
/ \
---A---B---C (origin/main)
📘 常用参数:
参数 含义 --no-ff 强制创建 merge commit(保留分支历史) --squash 将多个提交压缩成一个 --abort 取消冲突中的合并操作
⸻
🧭 3️⃣ git checkout
切换分支 / 恢复文件。
切换分支
git checkout develop
恢复文件
git checkout main -- path/to/file
📘 注意: • 切换分支会更新工作区; • 如果文件有未提交修改,会提示冲突。
🆕 新命令(推荐使用):
git switch <branch> # 切换分支
git restore <file> # 恢复文件
⸻
🔄 4️⃣ git rebase
把当前分支“移动”到目标分支的最新提交之后。
基本原理:
原始: main: A--B--C feature: D--E
rebase 后: main: A--B--C--D'--E' (D、E 被重放)
命令:
git checkout feature git rebase main
📘 结果: • 线性历史; • 无额外 merge commit; • 适合个人分支与主分支对齐。
🧨 注意:
rebase 会重写历史(修改 commit ID), 不要对已 push 到远程的分支执行 rebase。
⸻
🔍 第五章:fetch、merge、pull、rebase 的区别总结
命令 是否更新本地代码 是否创建新 commit 是否改变历史 fetch ❌ 否 ❌ 否 ❌ 否 merge ✅ 是 ✅ 是 ❌ 否 pull ✅ 是 ✅ 可能(如果有冲突) ❌ 否 rebase ✅ 是 ❌ 否(重写历史) ✅ 是
💡 git pull = git fetch + git merge(或 git rebase,取决于配置)
⸻
🧱 第六章:分支与历史操作秘籍
🔹 查看分支
git branch # 本地分支 git branch -r # 远程分支 git branch -a # 所有分支
🔹 新建分支
git branch feature/api git checkout -b feature/api
🔹 删除分支
git branch -d feature/api git push origin --delete feature/api
🔹 查看图形历史
git log --graph --oneline --decorate --all
⸻
🧮 第七章:提交修正与回退
🧩 修改上一次提交
git commit --amend
(在不产生新 commit 的情况下修改上次提交)
🧩 撤销 commit(保留修改)
git reset --soft HEAD~1
🧩 撤销 commit(丢弃修改)
git reset --hard HEAD~1
🧩 回滚历史(生成反向 commit)
git revert <commit_id>
⸻
🧰 第八章:日常实战组合
💡 同步主干
git fetch origin git rebase origin/main
💡 分支更新合并
git checkout main git merge feature/api git push
💡 冲突修复
git status
修改冲突文件
git add . git rebase --continue
💡 提交临时保存
git stash git stash list git stash pop
⸻
🧠 第九章:高级技巧与冷门命令
命令 | 作用 |
---|---|
git reflog | 查看所有操作记录(包含丢失分支) |
git cherry-pick <commit> | 拣选一个提交应用到当前分支 |
git bisect | 二分查找引入 bug 的 commit |
git blame <file> | 查看每行最后修改人 |
git clean -fd | 删除未追踪文件 |
git gc | 清理压缩对象数据库 |
git worktree | 在同一 repo 建多个工作区 |
git submodule | 管理嵌套子仓库 |
git archive | 打包导出版本内容 |
⸻
📘 第十章:心智模型总结
Git 操作心智流
编辑 → 暂存 → 提交 → 推送 ↓ 分支合并 ↔ 远程同步 ↓ 回退 / 修正 / 压缩历史
用一句话总结:
Git 的本质是移动“指针”, 每个命令都是在操作 HEAD、branch、index、object 四者之间的关系。
⸻
🔧 建议练习题(架构师级)
1️⃣ 模拟冲突:两个分支改同一文件,用 merge / rebase 各解决一次 2️⃣ 模拟丢分支:误删后用 reflog 找回 3️⃣ 模拟 rebase 打平历史 4️⃣ 模拟 cherry-pick 把某个 bug fix 应用到老版本 5️⃣ 模拟 stash + pop 结合冲突场景
⸻
是否要我帮你把这份手册整理成一份 Markdown + PDF 可打印版? 我可以按章节生成带目录的版本,方便你随时查阅或放进开发文档系统(如 Obsidian / Cursor)。