接手新代码库时先跑这 5 条 git 命令

三葉Leaves Author

参考文献链接: https://piechowski.io/post/git-commands-before-reading-code/

1. 找过去一年改动最多的 20 个文件

1
2
3
4
5
git log --format=format: --name-only --since="1 year ago" \
| sort \
| uniq -c \
| sort -nr \
| head -20

它回答的问题:

哪些文件是这个项目里最“忙”的地方?

例如输出:

1
2
3
4
342 src/services/payment.ts
287 src/api/user.ts
190 prisma/schema.prisma
156 app/dashboard/page.tsx

说明:

  • payment.ts 一年被修改 342 次

  • 它可能是核心业务代码

  • 也可能是历史包袱最重的地方


为什么有价值?

高修改频率(code churn)通常意味着:

  • 业务复杂

  • 需求经常变化

  • 模块边界设计不好

  • 修改一个地方容易影响很多地方

尤其危险的是:

一个文件修改很多次,但是没人敢重构。

这种文件往往就是“雷区”。

例如:

1
2
3
4
5
6
7
8
9
src/utils/index.ts

1000

过去一年修改 500

10 个人碰过

没有测试

你进入项目后,应该优先理解它。


2. 看谁提交最多

1
git shortlog -sn --no-merges

例如:

1
2
3
4
245 Alice
180 Bob
35 Charlie
12 David

它回答:

这个项目的知识分布是什么?


假设:

1
2
Alice 80%
其他人 20%

意味着:

  • Alice 可能掌握大量隐含知识

  • 如果 Alice 离职,项目风险很高

这叫:

Bus Factor(单点知识风险)

也就是:

“如果这个人被公交车撞了,项目还能不能继续?”


当然不能简单认为:

1
提交最多 = 最厉害

因为:

  • 有人提交习惯拆得很细

  • 有人一次提交几千行

  • 自动生成提交可能污染统计

它只是一个信号。


3. 找 Bug 集中的文件

1
2
3
4
5
6
git log -i -E --grep="fix|bug|broken" \
--name-only --format='' \
| sort \
| uniq -c \
| sort -nr \
| head -20

它回答:

哪些地方经常出问题?

例如:

1
2
3
89 src/payment/payment.ts
55 src/auth/session.ts
41 src/upload/file.ts

说明:

这些地方经常出现:

1
2
3
fix payment bug
fix broken checkout
hotfix auth issue

结合第一个命令:

如果发现:

1
2
3
4
5
6
7
8
修改次数:

payment.ts 500


Bug 修复:

payment.ts 89

那么:

这是重点关注区域。

它可能:

  • 业务核心

  • 架构有问题

  • 测试不足


4. 看项目提交活跃度趋势

1
2
3
git log --format='%ad' --date=format:'%Y-%m' \
| sort \
| uniq -c

例如:

1
2
3
4
5
2026-01 120
2026-02 150
2026-03 130
2026-04 20
2026-05 15

它回答:

这个项目现在还有生命力吗?


可能情况:

正常:

1
每个月稳定几十次提交

说明:

  • 持续维护

  • 团队稳定


危险:

1
2
3
4
5
6
7
之前每月 200 

突然下降:

20
10
5

可能:

  • 项目进入维护期

  • 团队人员减少

  • 项目没人负责


注意:

提交数量 ≠ 项目质量。

例如:

一个成熟项目可能:

1
2
提交少
但是稳定

所以它只是观察信号。


5. 查看回滚和紧急修复

1
2
git log --oneline --since="1 year ago" \
| grep -iE 'revert|hotfix|emergency|rollback'

它回答:

团队是不是经常线上救火?

例如:

1
2
3
4
5
a12bc3 revert payment change

b45de6 hotfix production crash

c78fa9 emergency fix login

说明:

发布流程可能存在问题。


可能原因:

  • 测试不足

  • CI/CD 不完善

  • staging 环境缺失

  • 发布流程太冒险


但反过来也可能:

一个成熟团队:

1
2
发现问题
快速 rollback

这其实是能力表现。

关键看频率。

  • 标题: 接手新代码库时先跑这 5 条 git 命令
  • 作者: 三葉Leaves
  • 创建于 : 2026-08-05 00:00:00
  • 更新于 : 2026-09-20 23:26:04
  • 链接: https://blog.oksanye.com/061e1ffee4fa/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论