如何获取在最近一次Git推送中受影响的所有提交信息?

3

我试图创建一个 git hook,在每次“post-recieve”时将所有提交的通知发送到我们的 ms-teams 频道。

Git hook 本身可以工作,但是使用命令 git log -1 --pretty=format:'%s' ,我只能得到最后一条提交消息,如果您在 master 分支上提交了多个提交,这并不是很有用。

是否有一种方法可以在每次推送时获取所有受影响的提交数据(消息、作者、提交日期、提交编号等)?

我在 Stack Overflow 上查找了很多问题,但没有找到解决我的问题的正确方案。


这个针对 pre-receive 的回答也适用于 post-receive 吗? - Lasse V. Karlsen
2个回答

3
通常情况下,你的origin/master将是你上次同步后远程originmaster的位置。而master则是当前分支。它们之间的提交是你感兴趣的,你可以使用git log origin/master..origin获取它们,并对它们进行任何操作。
现在在你的情况下,你需要在接收后在服务器上运行这个命令。我不确定post-receive会有这些信息(因为引用已经被更新)。然而,pre-receive钩子可以接收所有被推送的提交列表。也许将其连接到您的通知功能会更有帮助。从Lasse V. Karlsen的评论链接的答案详细介绍了如何实现此操作。

0

我也有同样的需求。我需要在某个标签之后生成每个提交所做的评论列表,以生成一种更改日志列表。

你知道 post-receive 除了名称外,还会获取所有引用的旧值和新值。

发送到脚本的参数将采用以下形式:<oldrev> <newrev> <refname>

因此,您只需要执行:git log $1..$2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接