↓ 跳过正文

Git Git Graph VS Code

终端和VS Code里查看Git分支图:用它追进度,不搞微观管理

git log --graph命令怎么用、怎么设成别名、怎么对比两个分支,VS Code里的Git Graph插件和自带的提交图。再说说我怎么用它掌握进度,又不盯人。

终端和VS Code里查看Git分支图:用它追进度,不搞微观管理

想看Git分支图,最快的办法是在终端里运行git log --graph --oneline --all --decorate:所有分支都会画成字符线条,一行一个提交,分支名和标签名标在它们指向的提交旁边。在VS Code里,可以直接用源代码管理视图里自带的Source Control Graph,也可以装Git Graph插件,得到一张更大、能点击的图。两种方法在文末都有详细说明。

没人喜欢被问"进展怎么样了?"。可作为在公司带项目的人,我又不能不知道进展。我的折中办法是Git提交图:先看图,再决定要不要问人。大多数时候,答案已经在图里了。提交活动、分支、合并一眼可见,谁也不用为此开会。

从图里到底能看出什么
#

Git Graphs

如果你没仔细看过:图上每个节点是一次提交,每条岔开的线是一个分支,整张图就是项目的时间线。这个布局里的信息量出乎意料地大:

  • 扫一眼就知道有几个活跃分支、提交频率如何。
  • 突然安静下来的分支,或者几个星期没合并的分支,多半是有人卡住了。这种预警很值钱。
  • 合并频率反映团队的协作方式。合并勤快,说明工作在持续集成;分支活得太久,往往意味着有人在孤军奋战。

打扰更少,对话更好
#

明面上的好处是:不打断任何人也能掌握进度。更大的好处在真需要谈的时候:谈话从图出发,而不是从猜测出发。“这个分支从周二就没动过,有什么卡住了吗?“比"有什么进展吗?“强太多了。

把节奏挑明也有帮助。我的习惯是大多数早上扫一眼,每周认真看一次。团队知道这个节奏,所以谁也不会觉得突然。

别把它变成监控
#

这一条我得反复提醒自己。提交数不等于价值——一次深思熟虑的提交可能顶五十次刷存在感的提交。能看到每次提交,不代表有资格质疑每个决定;要信任团队,只在模式真正不对劲时才介入。而且把图带进谈话时,它是反馈的起点,不是起诉的证据。

在终端里看图
#

只要装了Git就行:

git log --graph --oneline --all --decorate

各个参数的作用:

  • --graph:在左侧画出分支和合并的线。
  • --oneline:每个提交只占一行,显示短哈希和提交信息的第一行。
  • --all:显示所有分支和标签,包括远程分支,而不只是当前所在的分支。
  • --decorate:把分支名和标签名标在它们指向的提交旁边。新版Git在输出到终端时默认就会显示,但加上这个参数,用管道传给别的命令时名字也不会丢。

每天早上敲一遍这么长的命令太累,设个别名:

git config --global alias.graph "log --graph --oneline --all --decorate"
git graph

历史长的仓库,整张图怎么滚都滚不到头。几种缩小范围的办法:

git graph --since="2 weeks ago"    # 只看最近两周
git graph -20                      # 只看最近20个提交
git log --graph --oneline main..feature                # feature有、main还没有的提交
git log --graph --oneline --left-right main...feature  # 两边都显示,用 < 和 > 区分

最后两条是对比两个分支。这里用的是普通的git log而不是别名,因为别名里的--all会把其他分支全都带回来。两个点显示feature有而main没有的提交;三个点加上--left-right,会把两边各自独有的提交都列出来,一眼就能看出一个长期分支已经跑偏了多远。

在VS Code里看图
#

VS Code自带提交图。打开源代码管理视图(Ctrl+Shift+G),里面有一个Source Control Graph分区,这是1.93版(2024年8月)加入的。默认只跟踪当前分支和对应的远程分支,用图标题栏上的分支选择器可以加上别的分支。随手看一眼的话,这就够了。

想一次看全所有分支,就装mhutchie开发的Git Graph插件(在扩展视图里搜"Git Graph”)。打开方式有三种:状态栏上的Git Graph按钮、源代码管理视图顶部的Git Graph图标,或者在命令面板里运行 Git Graph: View Git Graph (git log) 。点一个提交可以看它改了哪些文件;先点一个提交,再按住Ctrl/Cmd点另一个,就能对比这两个提交。不过这个插件从2021年起就没有发过新版本,所以自带的提交图也值得会用。

如果看不到Git Graph按钮,多半是插件没找到仓库。它默认只检查你打开的那个文件夹本身,不会往子文件夹里找。直接打开仓库所在的文件夹,或者在设置里调大git-graph.maxDepthOfRepoSearch就行。

其他工具
#

大多数Git工具都能看图。gitk --all是Git自带的历史浏览器。GitHub、GitLab、Bitbucket的仓库页面都有"network"或"graph"视图。桌面客户端里,SourceTree(Atlassian出的免费工具)、GitKraken、Tower,以及Windows上的TortoiseGit,也都能画提交图。

选哪个都行,目的只有一个:看懂进度,而不是数提交。