Ganchos são (atualmente) configurados exclusivamente por repositório, então não pode haver ganchos ativos antes de um repositório ser criado.
Se você quiser apenas inicializar algumas configurações específicas do repositório de forma idêntica para todos os novos repositórios, você poderá usar o mecanismo de modelo de repositório .
Usando seu próprio modelo, você pode
- instalar ganchos ativados (fornecendo um arquivo
<template‑dir>/hooks/<hook‑name>), - definir variáveis de configuração (fornecendo um arquivo
<template‑dir>/config) e - configurar regras ou atributos de exclusão por repositório (fornecendo um arquivo
<template‑dir>/info/excludeou<template‑dir/info/attributes>).
Qualquer arquivo de configuração que resida em um diretório .git pode ser colocado em um modelo para servir como a cópia inicial desse arquivo em novos repositórios inicializados a partir do modelo. Eu suponho que você poderia até fornecer objetos iniciais e refs.
Quando você tiver um diretório de modelos criado com suas personalizações, deverá informar git init e git clone onde encontrá-lo. Isso pode ser feito explicitamente com a opção --template (Git 0.99.4 ou posterior), ou implicitamente com a variável de ambiente GIT_TEMPLATE_DIR (Git 1.5.0 ou posterior), ou implicitamente definindo a variável de configuração init.templatedir no Arquivos de configuração Git "globais" (por usuário) ou "sistema" (ou seja, ~/.gitconfig ou /etc/gitconfig (varia de acordo com a instalação); Git 1.7.1 ou posterior).