news 2026/8/30 4:02:58

用Git提交信息与自动化脚本生成每日进度日报的实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用Git提交信息与自动化脚本生成每日进度日报的实战指南

很多开发者都有过这种体验:一天下来代码写了不少,但到了晚上复盘时,却说不清今天到底完成了什么。如果再加上多任务并行、临时修 Bug、紧急支持线上问题,就更难梳理“今天的进度”了。

“今日进度”并不是一个玄学概念,它是由代码提交、任务状态、测试结果和阶段产出共同构成的。如果能够用一套规范流程来记录、统计和复盘每日进度,不仅能提升个人工作效率,还能让团队协作更加透明。

本文会从开发者的实际工作场景出发,介绍如何利用 Git、自动化脚本和看板工具来管理每日进度,并给出可直接复制的 Shell/Python 脚本,帮你在每天下班前自动生成进度日报。


1. 背景与核心概念

1.1 什么是“今日进度”

在软件开发工作中,“今日进度”通常包含以下几类信息:

  • 完成了哪些功能开发。
  • 修复了哪些 Bug。
  • 完成了哪些代码评审。
  • 进行了哪些技术调研或文档编写。
  • 当前还有哪些任务处于阻塞状态。

这些信息看似琐碎,却是项目管理、迭代排期、个人绩效评估的重要依据。

不少开发者习惯于在晚上凭记忆写日报,这种方式的缺点是很容易遗漏细节。比如:

  • 今天改了 5 个文件,但只记得“改了一个列表页”。
  • 重构了某段逻辑,但没有对应的提交信息。
  • 帮同事排查了一个问题,却忘了记录。

如果所有代码变更都通过 Git 管理,并且提交信息规范,那么“今日进度”就可以通过自动化方式提取,不需要靠大脑回忆。

1.2 为什么需要系统化记录每日进度

从个人角度,每日进度记录能帮助:

  • 回顾一天的工作成果,发现时间分配问题。
  • 在周报、月报中快速提取关键信息。
  • 统计自己的代码产出量和质量趋势。
  • 找到频繁阻塞自己的问题点。

从团队角度,系统化的进度记录能帮助:

  • 让站会更有重点,避免无效沟通。
  • 让项目经理更精准地评估迭代风险。
  • 让代码评审有据可查。
  • 让知识在团队内沉淀,而不是留在个人记忆中。

1.3 今日进度与 Git 提交的关系

Git 是当前最流行的版本控制工具。每一次git commit记录,本质上就是一次“进度快照”。

一次规范的提交信息,应该回答三个问题:

  • 改了什么。
  • 为什么改。
  • 影响范围是什么。

如果团队里每个人都坚持规范化提交,那么 Git 历史就是一份高质量的项目日志。通过脚本按时间段筛选提交记录,就能自动生成“某一天、某个人、某个项目的进度报告”。

原始提交信息(不推荐): fix bug 规范化提交信息(推荐): fix(order): 修复订单列表页金额千分位丢失问题 - 问题原因:前端格式化函数未处理负数场景 - 修复方式:统一使用 formatMoney 方法 - 影响范围:订单列表页、订单详情页

2. 环境准备与版本说明

在动手实践之前,需要先确认你的开发环境。以下配置以常见环境为例,具体版本请根据实际项目情况调整。

2.1 推荐环境

工具说明
操作系统Windows 10/11、macOS、Linux 均可
Git2.30 及以上
Python3.8 及以上(用于生成日报脚本)
BashmacOS/Linux 自带;Windows 可使用 Git Bash
代码托管平台GitHub、GitLab、Gitee 等
项目管理工具Jira、Trello、飞书项目、禅道等

2.2 核对本地环境

打开终端,执行以下命令确认 Git 和 Python 是否可用。

git --version python --version

如果未安装 Git,请先前往 Git 官网下载安装包。安装完成后,建议配置全局用户信息:

git config --global user.name "Your Name" git config --global user.email "your_email@example.com"

2.3 准备示例项目

为了演示效果,可以创建一个简单的测试仓库:

mkdir today-progress-demo cd today-progress-demo git init

创建文件app.py,写入一段简单代码:

def hello(name): return f"Hello, {name}" if __name__ == "__main__": print(hello("CSDN"))

第一次提交:

git add app.py git commit -m "feat: 初始化示例项目"

到这里,本地环境就准备好了。接下来我们进入正题。


3. 用 Git 记录今日进度的核心操作

3.1 提交信息规范

提交信息是进度的最小单元。建议使用社区通用的 Conventional Commits 规范。

基本格式:

<type>(<scope>): <subject> <body>

常见 type 包括:

type含义
feat新功能
fix修复 Bug
docs文档变更
style格式调整
refactor重构
test测试相关
chore构建、工具链等杂项

示例:

git commit -m "feat(login): 增加短信验证码登录能力" git commit -m "fix(cart): 修复购物车数量为负数时总价计算错误"

提交信息越清晰,后续生成进度报告时越容易归类。

3.2 查看今日提交记录

Git 提供了强大的日志筛选功能。

如果要查看今天的所有提交:

git log --since="midnight" --pretty=format:"%h %an %s"

如果要查看本周的提交:

git log --since="1 week ago" --pretty=format:"%h %an %s"

还可以按作者筛选,适合查看某个同事最近的工作产出:

git log --since="midnight" --author="zhangsan" --pretty=format:"%h %s"

3.3 查看今日文件变更统计

git diff可以统计新增和删除的代码行数。

查看自今天零点以来的工作区变更:

git diff --since="midnight" --stat

查看某次提交的详细变更:

git show <commit-id> --stat

3.4 查看当前工作区状态

在一天结束时,执行git status查看还有哪些文件未提交。

git status

如果存在未提交的修改,说明今天的进度尚未完整记录。此时应该检查:

  • 是代码未完成,不属于“完成进度”。
  • 还是写完了忘记提交,需要补提交。

这里有一个判断标准:今日进度应优先记录“已完成并验证”的内容,而不是“写了但还没跑通”的代码。


4. 自动生成今日进度日报的实战脚本

手动执行 Git 命令虽然可行,但每天重复操作仍然繁琐。下面提供一个自动生成日报的脚本方案。

4.1 Shell 脚本:提取今日提交记录

创建一个文件daily-progress.sh

#!/bin/bash # daily-progress.sh # 功能:提取当天 Git 提交记录,生成 Markdown 格式日报 # 用法:bash daily-progress.sh OUTPUT_FILE="daily-report.md" echo "# 今日进度日报 - $(date +%Y-%m-%d)" > "$OUTPUT_FILE" echo "" >> "$OUTPUT_FILE" echo "## 今日提交" >> "$OUTPUT_FILE" echo "" >> "$OUTPUT_FILE" # 获取今日提交记录 git log --since="midnight" --pretty=format:"- %s (%h)" >> "$OUTPUT_FILE" # 统计变更行数 echo "" >> "$OUTPUT_FILE" echo "## 变更统计" >> "$OUTPUT_FILE" echo "" >> "$OUTPUT_FILE" git diff --shortstat "@{0.days.ago}" >> "$OUTPUT_FILE" echo "" >> "$OUTPUT_FILE" echo "日报已生成:$OUTPUT_FILE"

运行脚本:

bash daily-progress.sh

预期输出文件内容类似:

# 今日进度日报 - 2025-01-15 ## 今日提交 - feat(login): 增加短信验证码登录能力 (a1b2c3d) - fix(cart): 修复购物车数量为负数时总价计算错误 (b2c3d4e) ## 变更统计 2 files changed, 48 insertions(+), 6 deletions(-)

4.2 Python 脚本:从 Git 仓库采集进度数据

Shell 脚本适合快速输出,但如果需要更复杂的统计(如按类型分类、统计单文件修改量),建议使用 Python。

创建progress_report.py

import subprocess import datetime from collections import defaultdict def run_git_command(cmd): """执行 Git 命令并返回输出""" result = subprocess.run(cmd, shell=True, capture_output=True, text=True, encoding="utf-8") return result.stdout.strip() def get_today_commits(author=""): """获取当天的提交记录""" author_filter = f"--author={author}" if author else "" cmd = f"git log --since=midnight {author_filter} --pretty=format:%h|%an|%s" output = run_git_command(cmd) commits = [] if output: for line in output.splitlines(): parts = line.split("|") if len(parts) == 3: commits.append({ "hash": parts[0], "author": parts[1], "subject": parts[2] }) return commits def classify_commit(subject): """根据提交信息前缀对提交分类""" prefix = subject.split(":", 1)[0].strip() type_map = { "feat": "功能开发", "fix": "缺陷修复", "docs": "文档更新", "refactor": "代码重构", "test": "测试", "style": "代码样式", "chore": "工程维护", } return type_map.get(prefix, "其他") def generate_report(author=""): """生成日报""" commits = get_today_commits(author) today = datetime.date.today().isoformat() lines = [] lines.append(f"# 今日进度日报 - {today}") lines.append("") lines.append(f"提交总数:{len(commits)}") lines.append("") # 按类型统计 type_stats = defaultdict(int) for commit in commits: category = classify_commit(commit["subject"]) type_stats[category] += 1 if type_stats: lines.append("## 分类统计") lines.append("") lines.append("| 分类 | 数量 |") lines.append("| --- | --- |") for category, count in type_stats.items(): lines.append(f"| {category} | {count} |") lines.append("") # 提交明细 lines.append("## 提交明细") lines.append("") for commit in commits: category = classify_commit(commit["subject"]) lines.append(f"- [{category}] {commit['subject']} ({commit['hash']})") report_text = "\n".join(lines) with open(f"daily-report-{today}.md", "w", encoding="utf-8") as f: f.write(report_text) print(report_text) print(f"\n报告已保存:daily-report-{today}.md") if __name__ == "__main__": generate_report()

运行脚本:

python progress_report.py

脚本执行后,会生成一个带分类统计的日报文件。

如果你想统计某个同事当天的提交量,可以修改调用方式:

generate_report(author="zhangsan")

4.3 Windows PowerShell 方案

如果你的开发环境是 Windows 且不想安装 Python,也可以使用 PowerShell 脚本。

创建daily-progress.ps1

$today = Get-Date -Format "yyyy-MM-dd" $outputFile = "daily-report-$today.md" "# 今日进度日报 - $today" | Out-File -FilePath $outputFile -Encoding utf8 "" | Out-File -FilePath $outputFile -Append -Encoding utf8 git log --since="midnight" --pretty=format:"- %s (%h)" | Out-File -FilePath $outputFile -Append -Encoding utf8 Write-Host "日报已生成:$outputFile"

在 PowerShell 中执行:

.\daily-progress.ps1

如果系统提示禁止执行脚本,可以用:

powershell -ExecutionPolicy Bypass -File .\daily-progress.ps1

5. 从“今日进度”到“团队进度”:看板与同步

5.1 在看板中更新今日进度

代码提交只是进度的一个维度。作为团队一员,还需要将进度同步到项目管理工具中。

以 Jira 为例,常见的今日进度更新动作包括:

  • 将已完成任务移动到 “Done” 列。
  • 将进行中的任务更新预估剩余时间。
  • 在阻塞任务上添加评论,说明阻塞原因和期望解除时间。
  • 拆分子任务,细化今天完成的具体工作。

对于使用飞书项目或禅道的团队,逻辑类似。关键是:看板状态必须和实际代码进度一致,否则看板就成了摆设。

5.2 站会汇报模板

站会上汇报“今日进度”时,建议按以下结构组织:

  • 昨天完成了什么。
  • 今天计划做什么。
  • 遇到了什么阻塞。

示例:

昨天完成了订单列表页重构,新增了分页加载,提交了 3 个 commit; 今天计划完成订单详情页的缓存逻辑; 目前没有阻塞项。

如果你已经生成了日报,可以直接拿着日报文件汇报,信息更完整。

5.3 进度可视化

如果团队希望更直观地看到进度,可以做一些简单的可视化:

  • 用 Git 提交图展示每天提交频率。
  • 用燃尽图展示迭代剩余工程量。
  • 用柱状图统计每周提交次数。

这些可视化功能通常由 Jenkins、GitLab Insights、SonarQube 等工具提供,不需要额外开发。


6. 提交记录不规范导致的进度统计问题

6.1 提交信息太随意

现象:

git log --since="midnight" --pretty=format:"%s" 输出: fix update aaa

问题分析:

  • 无法判断提交涉及的功能模块。
  • 无法统计功能开发与 Bug 修复的比例。
  • 后续回溯需求变更时难以定位代码。

解决方案:

  • 推行 Conventional Commits 规范。
  • 在 Git 仓库根目录添加commitlint校验规则。
  • 在 CI 流程中增加提交信息检查步骤。

6.2 提交信息不规范但代码已完成

有些开发者习惯一次性提交大量代码,提交说明只写 “update” 或 “开发”。

这样做的后果是:

  • 单个提交过大,Code Review 困难。
  • 某个功能需要回滚时,无法精准定位。
  • 自动生成日报时,所有提交都被归为“其他”。

解决思路:

  • 一个功能一个提交。
  • 一个 Bug 修复一个提交。
  • 提交前检查git diff,确认内容与提交说明一致。

6.3 未提交的代码导致进度遗漏

现象:

  • 代码写完但忘了git add
  • 修改在临时分支上,未合并到主分支。
  • 本地提交未 push 到远程仓库。

这些都会导致日报脚本统计不到真实的今日进度。

排查步骤:

  1. 执行git status查看未提交文件。
  2. 执行git branch -vv查看本地分支与远程分支的同步状态。
  3. 执行git log origin/master..HEAD查看未推送的提交。
  4. 补齐提交或推送操作后,重新生成日报。

6.4 跨天工作时提交时间异常

如果你的工作节奏经常跨越零点,例如凌晨 1 点才提交前一天的功能代码,那么按 “midnight” 过滤的脚本会把凌晨的提交归到第二天。

解决方案包括:

  • 调整脚本的统计时间段,例如从凌晨 4 点作为“新的一天”起点。
  • 或者手动在日报中说明凌晨提交的归属。

修改 Shell 脚本中的过滤条件即可:

git log --since="4 hours ago" --pretty=format:"%h %s"

这种方式的优点是贴合实际作息,缺点是跨周、跨月时统计逻辑需要额外维护。

6.5 常见问题速查表

问题现象常见原因解决思路
日报中没有提交记录代码在未 push 的本地分支先合并或推送,再重新生成
提交全部被归为“其他”提交说明没有按规范填写补充 type 前缀,例如 feat/fix
统计的变更行数为 0使用了错误的 git diff 参数检查 diff 的对比范围
生成脚本乱码编码格式不统一统一使用 UTF-8 编码
Windows 下 Bash 脚本无法运行未安装 Git Bash使用 Git Bash 或 PowerShell 版本

7. 记录每日进度的工程建议

7.1 建议一:提交信息规范化从今天开始

与其写两行字解释提交,不如在首次提交时就遵守规范。

推荐模板:

type(scope): subject body

例如:

fix(payment): 修复退款金额精度丢失问题 退款金额计算涉及浮点数乘法,容易产生精度误差。 改为 Decimal 后验证通过,影响支付退款相关接口。

7.2 建议二:每天结束前做一次“进度快照”

下班前 10 分钟,可以执行以下操作:

# 1. 查看今日提交 git log --since="midnight" --oneline # 2. 查看工作区状态 git status # 3. 查看未推送分支 git log origin/master..HEAD --oneline

根据结果,决定是否补提交或同步看板。

7.3 建议三:用提交信息和日报反推工作量

当你连续一周生成日报后,可以回顾这些数据:

  • 提交数量是否过于集中在某一天。
  • 缺陷修复占比是否过高。
  • 是否有大量时间消耗在非代码任务上。

这些都是优化工作节奏的重要依据。

7.4 建议四:重要进度需要补充描述

不是所有进度都能通过 Git 记录。比如:

  • 和产品经理确认了需求边界。
  • 完成了一个技术方案的调研。
  • 帮助同事定位了一个环境问题。

这些内容可以在日报的“非代码进度”部分手动补充。建议在日报脚本中预留一个补充章节。

7.5 建议五:不要为了刷提交数量而碎提交

规范化提交并不等于“每个文件提交一次”。合理的提交粒度是:

  • 单个提交能独立表达一个完整的变更点。
  • 同事评审时能快速理解变更原因。
  • 回滚时可以只回滚一个逻辑单元。

7.6 建议六:分支管理保持整洁

“今日进度”如果塞在多个长期未合并的分支里,统计时会非常混乱。

推荐做法:

  • 每个功能分支尽量当天合并或推送到远程。
  • 长期分支定期同步主分支,避免大量冲突。
  • 不再使用的分支及时清理。

常用命令:

# 删除本地已合并的分支 git branch --merged | grep -v "\*" | xargs git branch -d # 删除远程已合并的分支 git push origin --delete <branch-name>

7.7 建议七:权限与安全边界

在大型团队中,代码提交和分支合并通常受权限管理控制。修改 Git 历史或强制推送时,必须注意:

  • 强制推送前确认目标分支是否属于共享分支。
  • 不要在公共分支上随意 rebase 已经推送的提交。
  • 涉及 release 分支的提交,应遵循团队变更流程。

8. 总结与学习路线

“今日进度”虽然听起来是一个时间概念,但在工程实践中,它完全可以被结构化、自动化和可追溯。

本文围绕每日进度管理,梳理了以下核心内容:

  1. 每日进度由代码提交、任务状态和阶段产出共同构成。
  2. 规范化 Git 提交信息是自动化生成日报的基础。
  3. 通过git loggit diff可以快速提取当天提交记录。
  4. 使用 Shell、Python 或 PowerShell 脚本,可以自动生成 Markdown 日报。
  5. 看板状态需要与代码进度保持一致。
  6. 遇到提交信息不规范的问题时,应优先从规范和流程入手解决。

下一步,你可以从以下方向继续深入:

  • 学习 Conventional Commits 完整规范,并在团队内落地。
  • 研究 Git 钩子和 CI 工具,在提交时自动校验提交信息格式。
  • 结合定时任务(cron 或 Windows 任务计划程序),让日报在每天固定时间自动生成。
  • 将日报数据接入 BI 工具,分析个人和团队的长期开发效率。

如果你希望把这套方法用在团队中,建议先从一次提交信息规范培训开始,再逐步引入自动化脚本和看板同步机制。记录者、管理者、协作多方都能从中获得收益。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/30 4:02:08

音频信号处理实战:用Python解析《春よ、来い》的特征提取与节拍追踪

很多人做音乐类应用、短视频工具或者音频内容平台时&#xff0c;都会遇到同一个困惑&#xff1a;音频文件明明能播放&#xff0c;但想用程序理解它却不知从哪下手。比如要识别一首歌的副歌位置、要自动标注节拍、要判断两段音频是不是同一个版本&#xff0c;甚至要给一段旋律做…

作者头像 李华
网站建设 2026/8/30 4:01:35

Windows C盘爆满怎么办?安全清理大文件与系统缓存全指南

写在前面的实话&#xff1a;C 盘爆红不是“忍一忍就过去”的小事。系统盘一旦空间不足&#xff0c;最直观的反应是电脑变卡、软件闪退、无法安装更新&#xff0c;甚至 Windows 会自动禁用休眠和虚拟内存来保命。更麻烦的是&#xff0c;很多同学在网上搜“C盘满了怎么清理”&…

作者头像 李华
网站建设 2026/8/30 4:01:34

进制转换全攻略:位权原理、Python脚本与考试技巧

作为计算机专业的专科生&#xff0c;如果你正在准备专升本考试&#xff0c;那么进制转换几乎是所有省份《计算机基础》科目中都绕不开的一个考点。无论是山东、四川、江西&#xff0c;还是河北、辽宁、内蒙古、重庆、天津等地&#xff0c;二、八、十六进制之间的相互转换都是试…

作者头像 李华
网站建设 2026/8/30 4:00:01

SPC58EC8调试器选型指南:从J-Link到Trace32的避坑之路

前阵子有个做汽车电子的小伙伴问我&#xff1a;新项目主控定了SPC58EC8&#xff0c;调试器到底选哪个&#xff1f;我第一反应是愣了一下——这问题看着简单&#xff0c;真要认真回答&#xff0c;牵扯出来的东西还真不少。SPC58EC8这颗芯片在国内汽车电子圈里用得越来越多了&…

作者头像 李华
网站建设 2026/8/30 3:59:20

人类神经系统主干通路图谱:从弥散MRI到连接组学的完整分析指南

这次我们来看一个与神经科学数据计算紧密相关的方向&#xff1a;人类神经系统主干通路图谱。标题里说的“Major highway of the human nervous system gets a complete road map”&#xff0c;翻译过来就是“人类神经系统的主要干线&#xff0c;终于有了一张完整路线图”。这里…

作者头像 李华
网站建设 2026/8/30 3:59:06

Python爬虫实战:从HTML到结构化数据的清洗与落地

做数据采集的时候&#xff0c;真正花时间的往往不是“把网页请求下来”这一步&#xff0c;而是请求下来之后&#xff0c;那堆混合着 HTML 标签、空格、换行、单位符号的原始字符串&#xff0c;怎么变成一张能直接交给 pandas、Excel 或数据库的规整表格。这篇内容属于 Python 小…

作者头像 李华