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