我在几个 git 项目的多个分支中工作。我想在所有这些项目和分支中获取我在特定日期的提交列表(用于时间表目的)。
虽然我可以为此目的编写一个实用程序脚本,但我不想重新发明轮子。有没有一种简单的方法可以做到这一点,使用现有的基于 unix 的工具或一些 git 高级用户配方?
我在几个 git 项目的多个分支中工作。我想在所有这些项目和分支中获取我在特定日期的提交列表(用于时间表目的)。
虽然我可以为此目的编写一个实用程序脚本,但我不想重新发明轮子。有没有一种简单的方法可以做到这一点,使用现有的基于 unix 的工具或一些 git 高级用户配方?
对于单个回购:
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
<date>
可以是任何通用格式。 <author>
区分大小写,并且还会检查电子邮件地址。
这会查看提交者日期(此提交何时应用于此存储库/分支),而不是作者日期(此内容首次提交的时间)。如果您已经重新调整和/或挑选了樱桃,这一点很重要。作者日期似乎没有等效功能。
要获取一组存储库的此日志,您可以运行:
for dir in repo1 repo2 ... repo_n; do
git --no-pager --git-dir="$dir/.git" log --all \
--after="<date> 00:00" \
--before="<date> 23:59" \
--author="<author>"
&& echo # to add a blank line between logs
done
要使用多个存储库,您可以使用mr。
在.mrconfig中定义自定义操作,例如。
[DEFAULT]
git_daylog = git log --branches --after="$* 00:00" --before="$* 24:00" --author="$(git config user.email)"
[gitrepos/my_blog_app]
[path_to_another_project_from_home]
...
并且您将能够说出mr daylog 26 june
并获取当前目录下在 mr 注册的所有存储库的日志。