git中pre-push和pre-receive hook之间的区别?

pho*_*nix 5 git githooks

在用例或工作逻辑方面,git中的pre-push和pre-receive hook之间是否有区别?
我从他们的文档中可以理解的唯一区别是他们收到的输入 -

1. 预推:有关推送内容的信息在挂钩的标准输入上提供了表格线 - 本地参考SP本地sha1 SP遥控器SP遥控器sha1 LF

2. 预接收:对于每个要更新的ref,它在标准输入上接收格式的行 -
旧值SP新值SP ref-name LF
但是,我想知道每个是否有特定的用例挂钩还是可以互换使用?

Von*_*onC 5

One(pre-push)是客户端钩子,另一个(pre-receive)是服务器端钩子.

在这方面,它们是非常不同的,如果您想要一致地执行给定的策略,您通常在预接收(服务器端)挂钩中执行它.这样,您就不必担心在每个客户端上部署预推钩.

记住:钩本地到回购,这意味着一个推预钩不能容易地分发到任何下游回购.但是如果那些下游存储库都指向相同的上游存储库,则预接收挂钩可以全部应用于它们.