如何为 git hooks 目录指定新路径?

Che*_*rry 4 git

我在“程序文件”目录中安装了一个 git,我没有修改它的权限(只能读取)。但我想放一些新的钩子。有没有办法在命令行中调用git并为 hooks 目录指定新路径?

Von*_*onC 5

Git 钩子是存储库本地的。

创建 repo ( git init yourRepo) 后,您将在yourRepo/.git/hooks.


2016 年 5 月更新 git 2.9(2016 年 6 月)

你有一个新的配置: core.hooksPath

提交867ad08提交de0824e提交bf7d977提交49fa52f通过(2016年5月4日)ÆvarArnfjörðBjarmason( )avar
(由Junio C gitsterHamano合并-- --提交 6675f50 中,2016 年 5 月 17 日)

core.hooksPath
Run Code Online (Sandbox Code Playgroud)

默认情况下,Git 会在 ' $GIT_DIR/hooks' 目录中查找您的钩子。
将此设置为不同的路径,例如“ /etc/git/hooks”,Git 将尝试在该目录中找到您的钩子,例如“ /etc/git/hooks/pre-receive”而不是“ $GIT_DIR/hooks/pre-receive”。

路径可以是绝对的,也可以是相对的。相对路径被视为相对于运行钩子的目录

“相对路径”部分来自Git Hooks 手册页

在 Git 调用钩子之前,它会将其工作目录更改为非裸存储库中工作树的根目录,或者更改$GIT_DIR为裸存储库中的 。


原始答案(2014 年 2 月)

您可以指定不同的模板目录(来自git config

init.templatedir
Run Code Online (Sandbox Code Playgroud)

指定将从中复制模板的目录。(请参阅git-init(1)的“模板目录”部分。)

默认模板目录包括一些目录结构、一些建议的“排除模式”和示例“挂钩”文件的副本
建议的模式和挂钩文件都是可修改和可扩展的。

这意味着新的 repo ( git init) 将填充自定义文件夹中的默认内容(包括默认示例挂钩),而不是默认文件夹(这是 git 安装的一部分)。