如何在成功推送到Github后运行git钩子?

如何在成功推送到Github后运行git钩子?,git,amazon-web-services,githooks,Git,Amazon Web Services,Githooks,我想编写一个git钩子,在我推到Github上的prod分支时运行一些bash脚本。我正在编写的bash将基本上使用aws命令行工具将我的应用程序的更新推送到aws 我可以通过预推或后推来完成此操作吗 有一个所有挂钩的完整列表,并且没有后推挂钩。您可以在预推钩子中执行某些操作,但存在一个缺陷:您无法判断服务器是否将接受或拒绝推送,因为预推钩子运行得太早,无法让您在他们看到推送之前中止推送 最好的办法是将外部的git push包装成一个脚本:git push的退出状态告诉您成功完成了什么,和/或您

我想编写一个git钩子,在我推到Github上的prod分支时运行一些bash脚本。我正在编写的bash将基本上使用aws命令行工具将我的应用程序的更新推送到aws

我可以通过预推或后推来完成此操作吗

有一个所有挂钩的完整列表,并且没有后推挂钩。您可以在预推钩子中执行某些操作,但存在一个缺陷:您无法判断服务器是否将接受或拒绝推送,因为预推钩子运行得太早,无法让您在他们看到推送之前中止推送


最好的办法是将外部的
git push
包装成一个脚本:
git push
的退出状态告诉您成功完成了什么,和/或您可以查询远程(例如,通过
git ls remote
)并查看其引用在推送后是否发生了更改。(这有它自己的后即兴ergo-propter-hoc谬误的例子,但对于您的目的来说可能很好。)

post-receive呢?成功后的有效钩子push@OhadM:
post receive
钩子在接收Git中运行,而不是在推送Git中运行。GitHub不允许您设置任意的post接收钩子,因为这样会给您太多的权限访问他们的计算机。他们确实允许在接收后执行非常有限的一组操作,但这通常是解决OP想要解决的问题的错误方法。谢谢,我在预推期间尝试git push,得到了[remote rejected]master->master(无法锁定),但是,当查看远程提交时,一切看起来都很好。WDYT?“未能锁定”是一个奇怪的问题,但“远程拒绝”意味着另一个Git告诉您的Git:“不,我不会设置您请求的引用名称更改”。检查散列ID:提交的真实名称是它的散列ID。我看不出任何问题,散列看起来像上帝。不确定要检查什么。。。