Python 如何在git中测试提交前/提交后脚本?

Python 如何在git中测试提交前/提交后脚本?,python,git,githooks,git-commit,Python,Git,Githooks,Git Commit,我在python中创建了一个git post commit钩子,制作了一个可执行文件,并将其放入.git/post commit中 当我通过Python运行它时,它就工作了。现在我想在git中本地测试它。我该怎么做?我不能用一种简单的方式从我的计算机本地提交git,对吗 我是否应该将钩子文件复制到我的服务器并进行测试提交以测试它?还有别的办法吗 我不能用一种简单的方式从我的计算机本地提交git,对吗 您需要区分将分支推送到服务器(可能需要一些配置)和创建提交(与运行命令一样简单): $ git

我在python中创建了一个git post commit钩子,制作了一个可执行文件,并将其放入.git/post commit中

当我通过Python运行它时,它就工作了。现在我想在git中本地测试它。我该怎么做?我不能用一种简单的方式从我的计算机本地提交git,对吗

我是否应该将钩子文件复制到我的服务器并进行测试提交以测试它?还有别的办法吗

我不能用一种简单的方式从我的计算机本地提交git,对吗

您需要区分将分支推送到服务器(可能需要一些配置)和创建提交(与运行命令一样简单):

$ git commit --allow-empty -m "Testing my hook"

预提交和后提交挂钩在提交时本地运行(请参阅),而不是在推送时运行(推送是将本地提交传输到服务器的方式)

为了测试一个钩子,我将创建一个测试分支,并使用您想要的任何内容在那里进行多个测试提交。钩子准备好后,可以删除该分支。在你推之前,一切都是局部的

另外,如果您从钩子脚本中输出了一些内容,那么当您执行提交时,这些内容将在终端中可见。这对于调试很有用


要在服务器上执行代码,您应该使用“服务器端钩子”(,也是)。

在不按下按钮的情况下创建提交是否会触发我的本地git提交前或提交后脚本?@Oaemirami yes-提交和按下太不一样了。有关详细信息,请参阅。它们在本地运行?那么,当我将代码推送到repo时,应该使用哪个git钩子在服务器上触发呢?对于服务器端,使用“服务器端钩子”,比如“post-receive”。我已经用链接更新了答案。对于服务器端钩子,钩子脚本的工作目录是否为
/home/my_user/my_project/.git/
?脚本在.git/hooks(或者只是“hooks”用于“裸”repo)中,并且必须是可执行的。请阅读我知道的。我的问题是钩子脚本的工作目录是否为/home/My_user/My_project/.git/?或者/home/my_user/my_project/?不是我保存它的目录,而是工作目录