如何在git存储库中获取每个用户的最后提交时间?

czq61nw1  于 2022-12-02  发布在  Git
关注(0)|答案(2)|浏览(311)

有很多人在使用同一个git repo。我想列出每个人的最后一次提交时间。比如:

Alice Nov 22 
Bob Nov 21 
Charlie Nov 29

...
我知道我可以使用以下方法获得特定人员的最后一次提交:

git log --author="bob" -1

是否可以获得每个人的上次提交时间?

hlswsv35

hlswsv351#

**(1)**首先,您可以通过使用以下方法对日志进行排序来构建作者列表:

git log --all --pretty=format:"%aN" | sort -u

此时,我们需要注意的是,您可能希望使用.mailmap来规范化repo中可能存在的多个作者别名(否则,Joe Schmoe将被视为与joeshmoejoe.schmoe.home不同的作者,这两个名称是同一作者的其他名称,但来自不同的机器)。

**(2)**然后使用while循环遍历列表,并获取每个列表的最新提交,如

git log --all --pretty=format:"%aN" | sort -u | while read -r line ; do git log --all --pretty="%aN %ad" --date=short -1 --author="$line"; done

...finally**(3)**因为没有人希望每次都必须键入这么长的命令链,所以几乎强制性的别名可以是

# set the alias
git config --global alias.autlog '!git log --all --pretty=format:"%aN" | sort -u | while read -r line ; do git log --all --pretty="%aN %ad" --date=short -1 --author="$line"; done'

# use it
git autlog
cgfeq70w

cgfeq70w2#

如果你想得到每个用户在git仓库中的最后提交时间,你可以使用下面的命令:

$ git log --format="%aN" | sort | uniq

该命令列出存储库中所有已提交的用户,对它们进行排序并删除重复项。接下来,您可以使用以下命令获取每个用户的上次提交时间:

$ git log --format="%aN %ad" --date=short | grep "^<USERNAME>"

在这个命令中,你需要用用户名来替换它。这个命令列出了指定用户的所有提交,并显示了每次提交的日期。要获得上次提交的时间,你可以使用下面的命令:

$ git log --format="%aN %ad" --date=short | grep "^<USERNAME>" | tail -n 1

该命令列出指定用户的所有提交并显示每次提交的日期,最后一行是上次提交的时间。
例如,如果要查询用户名的上次提交时间,可以使用以下命令:john

$ git log --format="%aN %ad" --date=short | grep "^john" | tail -n 1

该命令显示用户的上次提交时间。john
此外,如果要获取每个用户的上次提交时间,可以使用以下脚本:

#!/bin/

相关问题