前言
随着自己开发的个人项目越来越多,也给自己制定了一些git的规范,例如git commit
提交日志的规范。
因为我的个人项目都是放在GitHub上,我在给项目开发新需求的时候,会新建一个issue,GitHub会给这个issue,创建一个#id
(不知道正确叫法是什么),然后在开发新需求的时候,会把分支名称改成#id
,这样就可以方便的跟踪项目后续问题回溯,同时还会在提交日志加上#id
,类似这样的格式:
#id-问题/功能描述
这样的格式,可以在GitHub的页面直接跳转到对应的issue或者pull request,非常方便。
但是每次都得手动加上#id-
,这样会比较麻烦,所以我想到了用git-hooks,在提交日志的时候,自动加上#id-
,这样就可以让我们不用手动加上#id-
了。
正文
关于git-hooks,我就不多说了,可以看看这里对git-hooks的介绍,如果只想把hook的规则单独使用在某个项目中,可以在项目的.git/hooks
下创建hook脚本。
如果想要在全局使用,有两种方式init.templatedir
或者core.hooksPath
。
init.templatedir
这种方式会在你的项目git init
的时候,自动创建一个hooks文件夹,然后把所有的hook脚本都放在这个文件夹下,如果是旧的项目就需要再次执行git init
才会生效。
#创建hooks文件夹
mkdir -p ~/.git-templates/hooks
#配置全局git templates
git config --global init.templatedir '~/.git-templates'
#确保脚本可以执行
chmod a+x ~/.git-hooksPath/hooks/xxx
将hook的脚本放入~/.git-templates/hooks
中即可。
core.hooksPath
这种方式需要git的版本在2.9+以上才能正常使用,比第一种方式方便在旧项目不需要再次init就可以使用。
#创建hooks文件夹
mkdir -p ~/.git-hooksPath/hooks
#配置全局git hooksPath
git config --global core.hooksPath ~/.git-hooksPath/hooks
#确保脚本可以执行
chmod a+x ~/.git-hooksPath/hooks/xxx
将hook的脚本放入~/.git-hooksPath/hooks
中即可。
如果有个别项目不需要使用全局的git hooks,可以在项目的根目录下重新配置git hooksPath,比如:
git config core.hooksPath .git/hooks
参考
Applying a git post-commit hook to all current and future repositories
Git 钩子
请保持转载后文章内容的完整,以及文章出处。本人保留所有版权相关权利。