
很多开发者都有过这种体验一天下来代码写了不少但到了晚上复盘时却说不清今天到底完成了什么。如果再加上多任务并行、临时修 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_emailexample.com2.3 准备示例项目为了演示效果可以创建一个简单的测试仓库mkdir today-progress-demo cd today-progress-demo git init创建文件app.py写入一段简单代码def hello(name): return fHello, {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修复 Bugdocs文档变更style格式调整refactor重构test测试相关chore构建、工具链等杂项示例git commit -m feat(login): 增加短信验证码登录能力 git commit -m fix(cart): 修复购物车数量为负数时总价计算错误提交信息越清晰后续生成进度报告时越容易归类。3.2 查看今日提交记录Git 提供了强大的日志筛选功能。如果要查看今天的所有提交git log --sincemidnight --prettyformat:%h %an %s如果要查看本周的提交git log --since1 week ago --prettyformat:%h %an %s还可以按作者筛选适合查看某个同事最近的工作产出git log --sincemidnight --authorzhangsan --prettyformat:%h %s3.3 查看今日文件变更统计git diff可以统计新增和删除的代码行数。查看自今天零点以来的工作区变更git diff --sincemidnight --stat查看某次提交的详细变更git show commit-id --stat3.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_FILEdaily-report.md echo # 今日进度日报 - $(date %Y-%m-%d) $OUTPUT_FILE echo $OUTPUT_FILE echo ## 今日提交 $OUTPUT_FILE echo $OUTPUT_FILE # 获取今日提交记录 git log --sincemidnight --prettyformat:- %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.pyimport subprocess import datetime from collections import defaultdict def run_git_command(cmd): 执行 Git 命令并返回输出 result subprocess.run(cmd, shellTrue, capture_outputTrue, textTrue, encodingutf-8) return result.stdout.strip() def get_today_commits(author): 获取当天的提交记录 author_filter f--author{author} if author else cmd fgit log --sincemidnight {author_filter} --prettyformat:%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(fdaily-report-{today}.md, w, encodingutf-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(authorzhangsan)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 --sincemidnight --prettyformat:- %s (%h) | Out-File -FilePath $outputFile -Append -Encoding utf8 Write-Host 日报已生成$outputFile在 PowerShell 中执行.\daily-progress.ps1如果系统提示禁止执行脚本可以用powershell -ExecutionPolicy Bypass -File .\daily-progress.ps15. 从“今日进度”到“团队进度”看板与同步5.1 在看板中更新今日进度代码提交只是进度的一个维度。作为团队一员还需要将进度同步到项目管理工具中。以 Jira 为例常见的今日进度更新动作包括将已完成任务移动到 “Done” 列。将进行中的任务更新预估剩余时间。在阻塞任务上添加评论说明阻塞原因和期望解除时间。拆分子任务细化今天完成的具体工作。对于使用飞书项目或禅道的团队逻辑类似。关键是看板状态必须和实际代码进度一致否则看板就成了摆设。5.2 站会汇报模板站会上汇报“今日进度”时建议按以下结构组织昨天完成了什么。今天计划做什么。遇到了什么阻塞。示例昨天完成了订单列表页重构新增了分页加载提交了 3 个 commit 今天计划完成订单详情页的缓存逻辑 目前没有阻塞项。如果你已经生成了日报可以直接拿着日报文件汇报信息更完整。5.3 进度可视化如果团队希望更直观地看到进度可以做一些简单的可视化用 Git 提交图展示每天提交频率。用燃尽图展示迭代剩余工程量。用柱状图统计每周提交次数。这些可视化功能通常由 Jenkins、GitLab Insights、SonarQube 等工具提供不需要额外开发。6. 提交记录不规范导致的进度统计问题6.1 提交信息太随意现象git log --sincemidnight --prettyformat:%s 输出 fix update aaa问题分析无法判断提交涉及的功能模块。无法统计功能开发与 Bug 修复的比例。后续回溯需求变更时难以定位代码。解决方案推行 Conventional Commits 规范。在 Git 仓库根目录添加commitlint校验规则。在 CI 流程中增加提交信息检查步骤。6.2 提交信息不规范但代码已完成有些开发者习惯一次性提交大量代码提交说明只写 “update” 或 “开发”。这样做的后果是单个提交过大Code Review 困难。某个功能需要回滚时无法精准定位。自动生成日报时所有提交都被归为“其他”。解决思路一个功能一个提交。一个 Bug 修复一个提交。提交前检查git diff确认内容与提交说明一致。6.3 未提交的代码导致进度遗漏现象代码写完但忘了git add。修改在临时分支上未合并到主分支。本地提交未 push 到远程仓库。这些都会导致日报脚本统计不到真实的今日进度。排查步骤执行git status查看未提交文件。执行git branch -vv查看本地分支与远程分支的同步状态。执行git log origin/master..HEAD查看未推送的提交。补齐提交或推送操作后重新生成日报。6.4 跨天工作时提交时间异常如果你的工作节奏经常跨越零点例如凌晨 1 点才提交前一天的功能代码那么按 “midnight” 过滤的脚本会把凌晨的提交归到第二天。解决方案包括调整脚本的统计时间段例如从凌晨 4 点作为“新的一天”起点。或者手动在日报中说明凌晨提交的归属。修改 Shell 脚本中的过滤条件即可git log --since4 hours ago --prettyformat:%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 --sincemidnight --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-name7.7 建议七权限与安全边界在大型团队中代码提交和分支合并通常受权限管理控制。修改 Git 历史或强制推送时必须注意强制推送前确认目标分支是否属于共享分支。不要在公共分支上随意 rebase 已经推送的提交。涉及 release 分支的提交应遵循团队变更流程。8. 总结与学习路线“今日进度”虽然听起来是一个时间概念但在工程实践中它完全可以被结构化、自动化和可追溯。本文围绕每日进度管理梳理了以下核心内容每日进度由代码提交、任务状态和阶段产出共同构成。规范化 Git 提交信息是自动化生成日报的基础。通过git log和git diff可以快速提取当天提交记录。使用 Shell、Python 或 PowerShell 脚本可以自动生成 Markdown 日报。看板状态需要与代码进度保持一致。遇到提交信息不规范的问题时应优先从规范和流程入手解决。下一步你可以从以下方向继续深入学习 Conventional Commits 完整规范并在团队内落地。研究 Git 钩子和 CI 工具在提交时自动校验提交信息格式。结合定时任务cron 或 Windows 任务计划程序让日报在每天固定时间自动生成。将日报数据接入 BI 工具分析个人和团队的长期开发效率。如果你希望把这套方法用在团队中建议先从一次提交信息规范培训开始再逐步引入自动化脚本和看板同步机制。记录者、管理者、协作多方都能从中获得收益。