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