429

コミット メッセージの事前フォーマットなどのために、共有できるいくつかの基本的なフック スクリプトを作成したいと思います。Git には、通常は に格納されているフック スクリプトがあります<project>/.git/hooks/。ただし、これらのスクリプトはクローンを作成しても伝播されず、バージョン管理もされていません。

誰もが適切なフック スクリプトを取得できるようにする良い方法はありますか? これらのフック スクリプトがリポジトリ内のバージョン管理されたスクリプトを指すようにすることはできますか?

4

13 に答える 13

285

Git 2.9では、構成オプションcore.hooksPathでカスタム フック ディレクトリを指定します。

フックをhooksリポジトリ内の追跡されたディレクトリに移動します。次に、リポジトリの各インスタンスhooksが の代わりにtracked を使用するように構成し$GIT_DIR/hooksます。

git config core.hooksPath hooks

一般に、パスは絶対パスか、フックが実行されるディレクトリ (通常は作業ツリーのルート。 の説明セクションを参照man githooks) に対する相対パスです。

于 2016-06-16T14:23:10.330 に答える
161

理論的には、hooksすべてのスクリプトを含むプロジェクト ディレクトリにディレクトリ (または好きな名前) を作成し、.git/hooks. もちろん、リポジトリのクローンを作成した各ユーザーは、これらのシンボリック リンクを設定する必要があります (ただし、非常に凝って、クローン作成者が実行して半自動的に設定できるデプロイ スクリプトを用意することもできます)。

*nix でシンボリック リンクを作成するには、次の手順を実行する必要があります。

root="$(pwd)"
ln -s "$root/hooks" "$root/.git/hooks"

ln -sf内容を上書きする準備ができている場合に使用します.git/hooks

于 2009-01-09T06:53:56.267 に答える
15

プロジェクトが JavaScript プロジェクトでありnpm、パッケージ マネージャーとして使用している場合、shared-git-hooksを使用して Git フックを に適用できますnpm install

完全な開示:私はこのパッケージを書きました

于 2016-02-13T16:58:40.643 に答える
4

git-hooksを使用します。.git/hooksこれは、invoke をプロジェクト ディレクトリの下のスクリプトにルーティングしgithooksます。

また、コピーやシンボリックリンクのフックをあらゆる場所で最小限に抑えるための多くの機能もあります。

于 2015-01-06T13:51:49.430 に答える
4

ビルド前およびビルド後のイベントを持つ Visual Studio ソリューション (およびプロジェクト) を使用しています。「GitHookDeployer」という名前のプロジェクトを追加しています。プロジェクトは、ビルド後のイベントでファイルを自己変更します。そのファイルは、ビルド ディレクトリにコピーするように設定されています。したがって、プロジェクトは毎回ビルドされ、スキップされることはありません。ビルド イベントでは、すべての git フックが配置されていることも確認します。

もちろん、ビルドするものが何もないプロジェクトもあるため、これは一般的な解決策ではないことに注意してください。

于 2017-11-01T14:10:22.240 に答える
1

複数の回答を 1 つにまとめたかったのです。あなたがあなたのproject/ディレクトリにいると仮定します:

カスタムフックをセットアップする

  1. ディレクトリを作成.githooksし、そこにフックを配置します。(.git/hooks例については、 を参照してください)

  2. .gitconfigディレクトリ¹を指すファイルを作成します。

    git config -f .gitconfig core.hooksPath .githooks
    
  3. で次のルールを作成しますMakefile: ²

    enable-git-hooks:
        git config --local include.path ../.gitconfig
        $(warning REMEMBER, YOU MUST HAVE REVIEWED THE CUSTOM HOOKS!)
    

カスタムフックを有効にする

すべての開発者は、それらを確認した後、これらのカスタム フックを明示的に有効にする必要があります。次のようなディレクティブを README に追加します。

で確認した後、カスタム フックを有効にしmake enable-git-hooksます。

于 2021-01-09T23:35:46.797 に答える