有一个服务器正在运行,并且上面有一个 git 实例。我希望每次用户 git Push 到服务器时运行一个脚本。我希望执行我的脚本,然后 git push 继续。 有什么解决办法吗?
我不确定您是否希望在推送之前或之后运行 scipt。这是我对预推的回答。但是如果你想要推送后(即推送后),你必须相应地更改
pre-push
钩子以检查推送是否成功,然后你就可以进行推送后的事情。
正如@Travis 所建议的,
git hooks
就是您正在寻找的那个。因此,要执行预推送脚本,您要做的就是在pre-push
中创建一个.git/hooks
文件。因此,在这种情况下,将一堆代码放入 pre-post 脚本文件中 .git/hooks/pre-push
并保存。然后通过chmod +x .git/hooks/pre-push
使其可执行。成功完成此操作后,每次运行推送命令时,您将能够看到脚本被执行。
PS:请注意,我还没有测试整个过程,但希望以这种方式工作。
简而言之,假设你(Linux 用户)位于项目目录中
vim .git/hooks/pre-push # then add your code and save the file
# Also put the shebang on top to identify the interpreter
chmod +x .git/hooks/pre-push # make it executable
您已标记此 GitHub,因此我假设您指的是公共 GitHub,而不是 GitHub 企业。
您无法在 GitHub 的服务器上运行“服务器端”脚本,因为这显然是一个巨大的漏洞,但您可以设置一个 Web 挂钩来触发另一台服务器上的脚本。
基本上,每当有人进行推送时,都会向特定的 URL 发送有关推送的数据。然后您可以从中触发脚本。有关 Web 挂钩的更多信息,请参阅 GitHub API 文档。
我参加聚会迟到了,但想添加一些信息,以防其他人想要这样做。
post-receive
githook。
如果您使用 GitHub,则需要使用 GitHub Actions。 actions/starter-workflows 存储库有很多您需要的 YAML 文件的好示例。