美文网首页
Git 钩子

Git 钩子

作者: 87d6dc4b11a7 | 来源:发表于2024-03-30 11:33 被阅读0次

钩子分为两种:客户端的和服务器端的。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。

安装钩子

钩子都被存储在 Git 目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hooks 。 当你用git init 初始化一个新版本库时,Git 默认会在这个目录中放置一些示例脚本。这些示例的名字都是以 .sample 结尾,如果你想启用它们,得先移除这个后缀。

客户端钩子

提交工作流钩子

pre-commit 钩子在键入提交信息前运行。 它用于检查即将提交的快照,例如,检查是否有所遗漏,确保测试运行,以及核查代码。 如果该钩子以非零值退出,Git 将放弃此次提交,不过你可以用 git commit --no-verify 来绕过这个环节。 你可以利用该钩子,来检查代码风格是否一致(运行类似 lint 的程序)、尾随空白字符是否存在(自带的钩子就是这么做的),或新方法的文档是否适当。

prepare-commit-msg 钩子在启动提交信息编辑器之前,默认信息被创建之后运行。 它允许你编辑提交者所看到的默认信息。 该钩子接收一些选项:存有当前提交信息的文件的路径、提交类型和修补提交的提交的 SHA-1 校验。 它对一般的提交来说并没有什么用;然而对那些会自动产生默认信息的提交,如提交信息模板、合并提交、压缩提交和修订提交等非常实用。 你可以结合提交模板来使用它,动态地插入信息。

commit-msg 钩子接收一个参数,此参数即上文提到的,存有当前提交信息的临时文件的路径。 如果该钩子脚本以非零值退出,Git 将放弃提交,因此,可以用来在提交通过前验证项目状态或提交信息。 在本章的最后一节,我们将展示如何使用该钩子来核对提交信息是否遵循指定的模板。

post-commit 钩子在整个提交过程完成后运行。 它不接收任何参数,但你可以很容易地通过运行 git log -1 HEAD 来获得最后一次的提交信息。 该钩子一般用于通知之类的事情。

电子邮件工作流钩子

其它钩子

服务器端钩子

pre-receive

处理来自客户端的推送操作时,最先被调用的脚本是pre-receive。 它从标准输入获取一系列被推送的引用。如果它以非零值退出,所有的推送内容都不会被接受。 你可以用这个钩子阻止对引用进行非快进(non-fast-forward)的更新,或者对该推送所修改的所有引用和文件进行访问控制。

update

update 脚本和 pre-receive 脚本十分类似,不同之处在于它会为每一个准备更新的分支各运行一次。 假如推送者同时向多个分支推送内容,pre-receive 只运行一次,相比之下 update 则会为每一个被推送的分支各运行一次。 它不会从标准输入读取内容,而是接受三个参数:引用的名字(分支),推送前的引用指向的内容的 SHA-1 值,以及用户准备推送的内容的 SHA-1 值。 如果 update 脚本以非零值退出,只有相应的那一个引用会被拒绝;其余的依然会被更新。

post-receive

参考:https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git-%E9%92%A9%E5%AD%90

相关文章

  • Git钩子详解

    Git钩子详解 钩子 Git钩子是在Git仓库中特定事件发生时自动运行的脚本。可以定制一些钩子,这些钩子可以在特定...

  • git钩子与web hook

    Git钩子 Git钩子就是git在特定的重要动作发生时触发自定义脚本。 钩子都被存储在 Git 目录下的 hook...

  • 利用git 的钩子拦截有问题的代码

    利用git 的钩子拦截有问题的代码通过git 提供的钩子功能,保证有问题的代码绝对不会被提交 Git 提供多种钩子...

  • 部署hexo(二):服务器实例配置

    前言 hexo 部署服务器的原理:将代码上传至 git 库 -> 触发 git push 钩子函数 -> 钩子函数...

  • git 钩子

    post-receive

  • Git钩子

    一、背景:我们(atom项目)遇到了什么问题? vue的脚手架工具(vue-cli)默认会给我们配置好了很多功...

  • Git 钩子

    钩子都被存储在 Git 目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hooks 。 当你用 ...

  • 使用git钩子对提交代码进行检查(pre-commit)

    git挂钩简介 git hooks是一些自定义的脚本,用于控制git工作的流程,分为客户端钩子和服务端钩子。 客户...

  • git hooks 检查commit message

    我们有时候想要规范git提交信息,幸好git提供了钩子,我们可以利用这个钩子类检查git 提交信息。只需要如下两个...

  • 解决pre -commit hook failed (add -

    钩子 钩子都被存储在 Git 目录下的 hooks 子目录中--即绝大部分项目中的 .git/hooks 。 当你...

网友评论

      本文标题:Git 钩子

      本文链接:https://www.haomeiwen.com/subject/zwwmtjtx.html