如何画出漂亮的 Git 分支图
命令行画分支图:git log --graph --oneline --all --decorate 是最常用的组合,可配置 git lg 别名。GUI 工具:GitKraken、Sourcetree、VS Code GitLens/Git Graph 插件效果更好。
命令行经典组合:git log --graph --oneline --all --decorate——ASCII 分支线、每提交一行、带分支/标签标注。配个别名 git lg 随时可用。要更漂亮的交互式图形,用 GitKraken、Sourcetree 或 VS Code 的 Git Graph 插件。
命令行方案
git log --graph --oneline --all --decorate
--graph:左侧画分支合并线;--oneline:每提交一行;--all:所有分支而不只是当前;--decorate:显示分支名和标签。
配置别名:
git config --global alias.lg "log --graph --oneline --all --decorate"
git lg
加分项:带作者和相对时间
git log --graph --abbrev-commit --decorate --format=format:'%C(yellow)%h%C(reset) %C(green)(%ar)%C(reset) %s %C(blue)<%an>%C(reset)' --all
GUI 工具
- VS Code Git Graph 插件:免费、交互式、点提交看 diff;
- GitKraken:跨平台,图形美观,团队协作功能强;
- JetBrains 系 IDE:内置 Git 工具窗的 log 图就很好用;
- gitk:Git 自带,丑但无需安装。
常见问题(FAQ)
Q:图太大看不过来?
加范围过滤:git lg --since="2 weeks ago"、git lg main feature-x(只看这两个分支)、--max-count=30。
Q:能导出成图片做文档吗?
命令行输出截图即可;正式文档用 mermaid 的 gitGraph 语法手绘示意图(嵌入 Markdown,GitHub 原生渲染)。
Q:为什么有的提交在图里看不到?
--all 只含分支和标签可达的提交。游离的提交(如 rebase 前的旧历史)要用 git reflog 找。