有很多人在使用同一个git repo。我想列出每个人的最后一次提交时间。比如:
Alice Nov 22 Bob Nov 21 Charlie Nov 29
...我知道我可以使用以下方法获得特定人员的最后一次提交:
git log --author="bob" -1
是否可以获得每个人的上次提交时间?
hlswsv351#
**(1)**首先,您可以通过使用以下方法对日志进行排序来构建作者列表:
git log --all --pretty=format:"%aN" | sort -u
此时,我们需要注意的是,您可能希望使用.mailmap来规范化repo中可能存在的多个作者别名(否则,Joe Schmoe将被视为与joeshmoe和joe.schmoe.home不同的作者,这两个名称是同一作者的其他名称,但来自不同的机器)。
.mailmap
Joe Schmoe
joeshmoe
joe.schmoe.home
**(2)**然后使用while循环遍历列表,并获取每个列表的最新提交,如
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
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/
2条答案
按热度按时间hlswsv351#
**(1)**首先,您可以通过使用以下方法对日志进行排序来构建作者列表:
此时,我们需要注意的是,您可能希望使用
.mailmap
来规范化repo中可能存在的多个作者别名(否则,Joe Schmoe
将被视为与joeshmoe
和joe.schmoe.home
不同的作者,这两个名称是同一作者的其他名称,但来自不同的机器)。**(2)**然后使用
while
循环遍历列表,并获取每个列表的最新提交,如...finally**(3)**因为没有人希望每次都必须键入这么长的命令链,所以几乎强制性的别名可以是
cgfeq70w2#
如果你想得到每个用户在git仓库中的最后提交时间,你可以使用下面的命令:
该命令列出存储库中所有已提交的用户,对它们进行排序并删除重复项。接下来,您可以使用以下命令获取每个用户的上次提交时间:
在这个命令中,你需要用用户名来替换它。这个命令列出了指定用户的所有提交,并显示了每次提交的日期。要获得上次提交的时间,你可以使用下面的命令:
该命令列出指定用户的所有提交并显示每次提交的日期,最后一行是上次提交的时间。
例如,如果要查询用户名的上次提交时间,可以使用以下命令:john
该命令显示用户的上次提交时间。john
此外,如果要获取每个用户的上次提交时间,可以使用以下脚本: