Find path to git hooks directory on the shell
如何找到当前 Git 存储库的
我看到以下问题:
深入目录结构
我可能在 git 存储库目录结构的任何深处,例如
1 | /home/user/project/.git/hooks |
我在文件夹中
1 | /home/user/project/foo/bar/baz/ |
子模块
较新的 git 版本将子模块元数据不放入
1 2 | $ cat /home/user/project/vendor/foo/.git gitdir: ../../.git/modules/vendor/foo |
所以在这种情况下,钩子目录在
1 | /home/user/project/.git/modules/vendor/foo/hooks |
您可以使用
1 | `git rev-parse --git-dir`/hooks |
获取 hooks 目录的路径。
这记录在 git rev-parse 手册页中
从 git 2.9(2016 年 6 月)开始,您需要查看新的配置
参见 ??var Arnfj??r?° Bjarmason (
(由 Junio C Hamano 合并 --
所以请务必检查是否定义了
1 | core.hooksPath |
By default Git will look for your hooks in the '
$GIT_DIR/hooks ' directory.
Set this to different path, e.g. '/etc/git/hooks ', and Git will try to find your hooks in that directory, e.g. '/etc/git/hooks/pre-receive ' instead of in '$GIT_DIR/hooks/pre-receive '.The path can be either absolute or relative. A relative path is taken as relative to the directory where the hooks are run.
Git 2.10(2016 年第三季度)使用新的
所以要得到有效的
1 | git rev-parse --git-path hooks |
来自
1 2 3 4 5 | --git-path <path> Resolve"$GIT_DIR/<path>" and takes other path relocation variables such as $GIT_OBJECT_DIRECTORY, $GIT_INDEX_FILE... into account. For example, if $GIT_OBJECT_DIRECTORY is set to /foo/bar then"git rev-parse --git-path objects/abc" returns /foo/bar/abc. |
参见 Johannes Schindelin (
(由 Junio C Hamano 合并 --
除了
1 | echo $(git rev-parse --show-toplevel) |
然后将
如果您在项目目录中
您可以通过输入 terminal
来了解当前的钩子路径
1 | git config core.hooksPath |
如果值为空,那么您可以设置 .githooks 文件夹的路径
你可以通过输入这个命令来做到这一点
1 | git config core.hooksPath .githooks/ |
现在你会发现 hooks 路径改变了,你可以通过第一个命令再次确认。