git本地commit设置hook钩子

1,443 阅读1分钟

钩子hook概念

Git钩子是一组脚本,这些脚本对应着Git仓库中的特定事件,每一次事件发生时,钩子会被触发。

这允许你可以定制化Git的内部行为,在开发周期中的关键点上触发执行定制化的脚本。

单个项目钩子

钩子脚本文件通常放置于项目目录的.git/hooks文件夹下。Git会在初始化项目时自动在这个文件夹下放置一些样例脚本。如果你查看.git/hooks文件夹下,会找到如下的文件:

applypatch-msg.sample       pre-push.sample
commit-msg.sample           pre-rebase.sample
post-update.sample          prepare-commit-msg.sample
pre-applypatch.sample       update.sample
pre-commit.sample

这些文件基本上涵盖了可以使用的钩子,只不过.sample扩展名不会让脚本内容生效。安装一个钩子最简单的方式就是删除.sample扩展名。或者如果你从头开始写好了一个钩子脚本,只需要将其命名为上面所列的文件名并去除.sample扩展名。

举例来说,安装一个最简单的prepare-commit-msg钩子脚本。删除.sample扩展名,然后添加如下内容:

#!/bin/shecho "# Please include a useful commit message!" > $1

全局项目钩子

  1. 在命令行中打开git全局配置 git config --global --edit
  2. 添加一个 [core]模块,注意如果项目中已经存在该模块,不需要重复添加。
  3. 在模块[code]中添加一行 hooksPath = /path/to/your/hooks/directoryimage.png
  4. 保存并关闭配置文件。
  5. 在上一步的目录中新增脚本文件,例如commit-msg你可以根据自己的需求创建不同的钩子脚本(pre-commitpost-commit 等)。
  6. 编辑新增commit-msg的脚本文件
#!/bin/shecho "# Please include a useful commit message!" > $1
  1. 在终端中,为钩子脚本文件授予执行权限 确保终端窗口的当前路径位于你的 Git 仓库之外。
chmod +x /path/to/your/hooks/directory/commit-msg