我编写了一个Git post-commit钩子并且它能够正确工作。但是,我想将此钩子添加到我正在工作的所有现有(和未来的)Git仓库中。
我尝试将钩子添加到~/.git/hooks/
目录而不是项目目录中的hooks目录中,然而这似乎没有起作用。
是否有一种方法可以创建全局Git钩子,使其适用于系统上的所有存储库(而无需将它们复制到每个项目目录中)?如果没有,那么最好的解决方案是什么 - 或许是一个git-init模板?
我编写了一个Git post-commit钩子并且它能够正确工作。但是,我想将此钩子添加到我正在工作的所有现有(和未来的)Git仓库中。
我尝试将钩子添加到~/.git/hooks/
目录而不是项目目录中的hooks目录中,然而这似乎没有起作用。
是否有一种方法可以创建全局Git钩子,使其适用于系统上的所有存储库(而无需将它们复制到每个项目目录中)?如果没有,那么最好的解决方案是什么 - 或许是一个git-init模板?
git config --global init.templatedir '~/.git_template'
~/.git_template/hooks
中。通过在与 .git
目录相同的目录中运行 git init
,可以使用适当的模板重新初始化现有的存储库。.git_template
目录以及其他 dot 文件,则运行 git init --template ~/.git_template
将起作用。您还可以使用 $GIT_TEMPLATE_DIR
环境变量告诉 git init
模板目录的位置。git init
是否会清空它 - 不会,参见:https://dev59.com/L2435IYBdhLWcg3w50f4 - konturgit config --global init.templatedir d:\git\.git_template\
- Vladimir Vukanacgit init
实际上没有为我更新钩子。看起来它不会覆盖已经存在的文件。相反,您需要先删除旧的钩子文件。stackoverflow.com/questions/10791486/。 - Phil R我希望将这个钩子添加到我正在使用的所有当前和未来的git仓库中。
对于git 2.9+ (2016年6月)及以上版本,你只需要执行以下操作:
git config --global core.hooksPath /path/to/my/centralized/hooks
参见"更改默认的git hooks":这样做是为了管理集中式的hooks。
/.git/hooks/pre_commit
,我可以将其指向那里吗? - Richlewis$PREFIX/share/git-core/templates/hooks
中,其中$PREFIX
可能是/usr/local
或者/usr
。--template
选项。您可以轻松地维护一个个人模板目录,其中包含回到您想要保留的默认设置的已安装版本的符号链接(各个钩子,信息目录...),然后在hooks/post-commit
中添加自己的内容和任何其他想要自定义的内容。git init
即可,它会添加我的新钩子。 - swanson/Applications/SourceTree.app/Contents/Resources/git_local/share/git-core/templates/hooks
。 - CupawnTaemingw64\share\templates\hooks
(或者 32 位系统下的 mingw32)找到。 - nerdherdmingw64\share\git-core\templates\hooks
(gfw 2.25)。 - RJFalconergit_hooks/
目录来跟踪你为该项目编写的挂钩,通过在README
中提及它来引起未来用户的注意,并依赖于他们在克隆后采取正确的操作。我思考了一段时间,并选择了增量方法。未来我可能会考虑使用像git-hooks这样的工具。