Git Visual Guide

Git 可视化图册

9 张通用 Git 信息图,覆盖日常开发、协作合并、误操作恢复和提交前检查。 图片和页面均为本地资源,整个目录可直接部署为静态站点。

Git 常用救场地图

从“我现在要解决什么问题”出发,快速定位该用哪个 Git 命令。

Git 常用救场地图信息图
  • 未提交改动优先看 stashdiffadd -p
  • 历史整理优先区分 mergerebaseresetrevert
  • 误操作恢复先查 reflog,再决定如何恢复。

基础检查

  • git status
  • git diff
  • git diff --staged

merge vs rebase

merge 保留真实分叉历史;rebase 把自己的提交重放到最新主线后面。

Git merge 和 rebase 对比信息图
  • merge 不重写历史,适合共享分支、发布分支和 PR/MR 合并。
  • rebase 会重写自己的本地提交,适合整理个人功能分支。
  • 已共享给别人依赖的分支,不要随意 rebase。

常用命令

  • git merge feature-branch
  • git rebase origin/main

git reset

reset 会移动 HEAD,并按模式决定是否改暂存区和工作区。

Git reset 三种模式信息图
  • --soft 只退 HEAD,保留 staged 改动。
  • --mixed 是默认模式,退 HEAD 并取消暂存。
  • --hard 会重置工作区,执行前要确认没有要保留的本地改动。

常用命令

  • git reset --soft HEAD~1
  • git reset HEAD~1
  • git reset --hard HEAD~1

git worktree

同一个仓库可以开多套工作区,不同分支并行处理,减少反复切换。

Git worktree 信息图
  • 适合并行开发、临时热修复、对比旧版本。
  • 每个 worktree 都要单独确认 pwdgit status
  • 清理 worktree 前先确认没有未提交改动。

常用命令

  • git worktree list
  • git worktree add ../repo-issue hotfix/issue
  • git worktree remove ../repo-issue

git stash

还没准备提交,但需要临时切走时,把工作区改动先收起来。

Git stash 信息图
  • stash 是临时保存,不等于提交,也不适合长期备份。
  • pop 会恢复并删除 stash;apply 会恢复但保留 stash。
  • 未跟踪文件需要加 -u 才会一起收起。

常用命令

  • git stash push -m "wip: changes"
  • git stash list
  • git stash pop

git cherry-pick

只复制指定 commit 的改动到当前分支,不合并整条分支。

Git cherry-pick 信息图
  • 适合跨分支搬运单个修复或小补丁。
  • cherry-pick 后会产生新的 commit hash。
  • 不要盲目搬一长串提交,先确认提交之间的依赖关系。

常用命令

  • git log --oneline
  • git cherry-pick <commit>
  • git cherry-pick --abort

git reflog

reflog 记录本地 HEAD 走过的位置,是 reset、rebase 后找回提交的重要线索。

Git reflog 信息图
  • 误 reset、误删分支、本地提交消失时,先查 reflog。
  • 更安全的恢复方式是先建 rescue 分支,再检查代码。
  • reflog 是本地记录,不等于远端备份。

常用命令

  • git reflog
  • git branch rescue <hash>
  • git checkout -b rescue <hash>

git revert

revert 新增一个反向提交,不改旧历史,适合撤销已推送的改动。

Git revert 信息图
  • 多人依赖或已经推送的提交,优先考虑 revert。
  • revert 不删除原提交,会保留完整审计历史。
  • 撤销 merge commit 前要确认 mainline 方向。

常用命令

  • git revert <commit>
  • git revert --continue
  • git revert -m 1 <merge-commit>

git diff + add -p

提交前先看差异,再只把相关改动分块放进暂存区。

Git diff 和 add -p 信息图
  • git diff 看未暂存改动,git diff --staged 看已暂存改动。
  • git add -p 可以只暂存相关代码块,减少 review 噪音。
  • 一个提交尽量只做一件事,避免混入调试日志和无关格式化。

常用命令

  • git status
  • git add -p
  • git restore --staged <file>