统计git 在时间范围内有哪些天是有加班commit的

发布于:2024-12-18 ⋅ 阅读:(57) ⋅ 点赞:(0)

如果你希望在 Git 提交日期统计中,除了显示有提交的日期,还能够显示每个日期对应的提交人(作者),你可以调整 Git 命令的输出格式,添加提交者的名字(%an)以及日期(%ad)。然后,使用类似的命令处理方式来提取并打印出日期和提交人的对应关系。

更新后的 Git 命令:

我们可以通过以下命令列出每个提交的日期和提交人:

git log --since="2024-01-01" --until="2024-12-31" --pretty=format:"%ad %an" --date=short | sort | uniq

解释:

  • %ad:表示提交日期。
  • %an:表示提交人(作者)的名字。
  • --date=short:使日期格式简洁(YYYY-MM-DD)。

这条命令会输出每个提交的日期和提交人的名字。例如:

2024-01-02 Alice
2024-01-03 Bob
2024-01-05 Alice
2024-02-10 Charlie
...

进一步统计的命令:

如果你希望进一步按日期来统计某一天有多少个提交,或者展示每一天的提交者,可以使用下面的命令:

git log --since="2024-01-01" --until="2024-12-31" --pretty=format:"%ad %an" --date=short | sort | uniq -c

这条命令会输出每个日期和提交者的数量。例如:

      3 2024-01-02 Alice
      1 2024-01-03 Bob
      2 2024-01-05 Alice
      1 2024-02-10 Charlie

Python 脚本来处理并输出(包含提交人):

如果你想使用 Python 脚本来处理并输出有提交的日期和提交者,可以修改之前的代码,将提交人信息一同提取:

import subprocess
import pandas as pd

# 获取 Git 提交的日期和提交人
git_log_command = "git log --since='2024-01-01' --until='2024-12-31' --pretty=format:'%ad %an' --date=short"
commit_data = subprocess.check_output(git_log_command, shell=True).decode('utf-8').splitlines()

# 将提交日期和提交人转化为 DataFrame
df = pd.DataFrame([line.split(' ', 1) for line in commit_data], columns=["commit_date", "author"])

# 转换为日期格式并去重
df['commit_date'] = pd.to_datetime(df['commit_date'])
df_unique = df.drop_duplicates(subset=["commit_date", "author"])

# 输出结果
print(f"Total unique commit days: {len(df_unique)}")
print("Days with commits and authors:")
print(df_unique)

# 可选:按日期分组,显示每天的提交者
df_grouped = df.groupby('commit_date')['author'].unique()
print("\nGrouped by date with authors:")
print(df_grouped)

解释:

  • git log 命令:我们修改了 --pretty=format 参数来同时输出日期和提交人的名字。
  • Python 脚本:通过 split 将每一行(日期和提交人)分割成两列,转化为 DataFrame,然后去重。
  • 输出:首先输出所有提交日期和提交人,然后按日期分组,显示每个日期的提交者。

输出结果示例:

Total unique commit days: 4
Days with commits and authors:
   commit_date   author
0   2024-01-02    Alice
1   2024-01-03      Bob
2   2024-01-05    Alice
3   2024-02-10  Charlie

Grouped by date with authors:
commit_date
2024-01-02        [Alice]
2024-01-03          [Bob]
2024-01-05        [Alice]
2024-02-10    [Charlie]

通过这种方法,你不仅可以看到每一天有提交的日期,还能看到哪些提交人参与了这些提交。