Git 常用救场地图
从“我现在要解决什么问题”出发,快速定位该用哪个 Git 命令。
- 未提交改动优先看
stash、diff、add -p。 - 历史整理优先区分
merge、rebase、reset、revert。 - 误操作恢复先查
reflog,再决定如何恢复。
基础检查
git statusgit diffgit diff --staged
9 张通用 Git 信息图,覆盖日常开发、协作合并、误操作恢复和提交前检查。 图片和页面均为本地资源,整个目录可直接部署为静态站点。
从“我现在要解决什么问题”出发,快速定位该用哪个 Git 命令。
stash、diff、add -p。merge、rebase、reset、revert。reflog,再决定如何恢复。git statusgit diffgit diff --stagedmerge 保留真实分叉历史;rebase 把自己的提交重放到最新主线后面。
merge 不重写历史,适合共享分支、发布分支和 PR/MR 合并。rebase 会重写自己的本地提交,适合整理个人功能分支。git merge feature-branchgit rebase origin/mainreset 会移动 HEAD,并按模式决定是否改暂存区和工作区。
--soft 只退 HEAD,保留 staged 改动。--mixed 是默认模式,退 HEAD 并取消暂存。--hard 会重置工作区,执行前要确认没有要保留的本地改动。git reset --soft HEAD~1git reset HEAD~1git reset --hard HEAD~1同一个仓库可以开多套工作区,不同分支并行处理,减少反复切换。
pwd 和 git status。git worktree listgit worktree add ../repo-issue hotfix/issuegit worktree remove ../repo-issue还没准备提交,但需要临时切走时,把工作区改动先收起来。
pop 会恢复并删除 stash;apply 会恢复但保留 stash。-u 才会一起收起。git stash push -m "wip: changes"git stash listgit stash pop只复制指定 commit 的改动到当前分支,不合并整条分支。
git log --onelinegit cherry-pick <commit>git cherry-pick --abortreflog 记录本地 HEAD 走过的位置,是 reset、rebase 后找回提交的重要线索。
git refloggit branch rescue <hash>git checkout -b rescue <hash>revert 新增一个反向提交,不改旧历史,适合撤销已推送的改动。
git revert <commit>git revert --continuegit revert -m 1 <merge-commit>提交前先看差异,再只把相关改动分块放进暂存区。
git diff 看未暂存改动,git diff --staged 看已暂存改动。git add -p 可以只暂存相关代码块,减少 review 噪音。git statusgit add -pgit restore --staged <file>