在工作中,撰写总结和周报是一项重要任务,尤其是当我们需要回顾和汇报近期的工作进展时。为了提高效率并准确地记录工作内容,将 Git 提交记录整理成易于阅读和分析的格式是一种常见需求。为此,我们可以采用一些脚本和命令行工具来自动化这一过程,从而节省时间和精力。
在日常工作中,尤其是周五或工作总结时,整理近期的 Git 提交记录变得尤为重要。传统的手动查阅提交信息不仅耗时,而且容易遗漏细节。为了解决这个问题,我们可以借助 Git 命令和脚本来自动化这一过程。通过脚本,我们可以按日期分组整理提交记录,并以清晰的格式展示,方便快速回顾和总结。
近期经常要写工作总结也就是周报了
于是出现一个需求将近期我的 commit 导出来
下面一步步打磨一下优化流程
CV 大法
打开 Git Branch 列表将 commit 一条一条打开然后 CV commit
初步方案:
使用 Git 命令按指定日期列出提交记录。这种方法直接但可能不够灵活。
git log --since="2024-07-31 00:00" --until="2024-07-31 23:59" --pretty=format:"%s" --date=short
改进方案
进一步优化,按日期范围自动列出最近五天的提交记录,并将日期和星期格式化为易读的中文格式。这种方法不仅提高了效率,还使得总结更具可读性。
打印近五天的 Git commit (一般我是在周五做总结)
并且按照 YYYY年MM月DD日 WEEKDAY 的格式进行分组展示
for i in {4..0}; do
date=$(date -v-"$i"d +%Y年%m月%d日)
weekday=$(date -v-"$i"d +%u)
case $weekday in
1) weekday="星期一";;
2) weekday="星期二";;
3) weekday="星期三";;
4) weekday="星期四";;
5) weekday="星期五";;
6) weekday="星期六";;
7) weekday="星期天";;
esac
echo "$date $weekday:"
git log --since="$(date -v-"$i"d +%Y-%m-%d) 00:00" --until="$(date -v-"$i"d +%Y-%m-%d) 23:59" --pretty=format:"%s"
echo
done
解释
for i in {4..0}; do
这个循环从4开始,到0结束。表示从最近的五天(包括今天)逐渐向过去推移。
date=i"d +%Y年%m月%d日)
date -v-"$i"d 用来计算当前日期减去 i 天的日期。
+%Y年%m月%d日 格式化输出日期为 2024年08月02日 这样的格式(年份、月份、日期)。
weekday=i"d +%u)
+%u 用来获取当前日期的星期几,返回1(星期一)到7(星期天)之间的数字。
case $weekday in ... esac
case 语句用来将数字星期几转换为中文格式。
例如,如果 $weekday 是1,weekday="星期一" 就会被设置为“星期一”。
echo "weekday:"
打印出格式化后的日期和中文星期,例如 2024年08月02日 星期五:。
git log --since="i"d +%Y-%m-%d) 00:00" --until="i"d +%Y-%m-%d) 23:59" --pretty=format:"%s"
git log 命令获取指定日期范围内的提交记录。
--since 和 --until 用来指定日期范围,从00:00到23:59。
--pretty=format:"%s" 格式化输出提交信息,只显示提交信息(不显示其他信息如提交者等)。
echo
输出一个空行,以便更清晰地分隔不同日期的提交记录。
进一步提升
将输出格式化为 Markdown,便于直接插入到报告或文档中,使总结更加专业和易于分享。
for i in {4..0}; do
date=$(date -v-"$i"d +%Y年%m月%d日)
weekday=$(date -v-"$i"d +%u)
case $weekday in
1) weekday="星期一";;
2) weekday="星期二";;
3) weekday="星期三";;
4) weekday="星期四";;
5) weekday="星期五";;
6) weekday="星期六";;
7) weekday="星期天";;
esac
echo "## $date $weekday"
git log --since="$(date -v-"$i"d +%Y-%m-%d) 00:00" --until="$(date -v-"$i"d +%Y-%m-%d) 23:59" --pretty=format:"- %s"
echo
done
输出结果
## 2024年08月02日 星期五
- 修复了某个问题
- 更新了文档
## 2024年08月01日 星期四
- 添加了新功能
- 进行了性能优化
## 2024年07月31日 星期三
- 修复了bug
- 改进了用户界面
通过这些优化步骤,我们不仅能够准确记录每一天的工作进展,还能提高工作总结的效率和质量。