太好了,这一步非常关键。 很多人能用 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)。