Michael Ciharのコメントを利用して、これらのシンボリックリンクを作成するために私が作成したbashスクリプトの例を次に示します。このスクリプトは、プロジェクトルートにあるgit_hooks / dirにあります。私の.git /フォルダーも同じディレクトリレベルにあります。
#!/usr/bin/env bash
pwd=$(pwd);
# Script is designed to be ran from git_hooks/ dir
if [[ "$pwd" == *"git_hooks"* ]]; then
files=$(ls | grep -v -e '.*\.');
while read -r file; do
ln -s ../../git_hooks/$file ../.git/hooks/
echo "Linked $file -> ../.git/hooks/$file"
done <<< "$files";
else
echo "";
echo "ERROR: ";
echo "You must be within the git_hooks/ dir to run this command";
exit 1;
fi
私のスクリプトは、実際のgit_hooks /ディレクトリ内から実行する必要があります。必要に応じて、動作が異なるように変更できます。
このスクリプトは、git_hooks /ディレクトリ内のファイル拡張子が接尾辞されていないファイルをシンボリックリンクします。このディレクトリにREADME.txtとこのスクリプト(symlink.shという名前)があります。実際のすべてのgitフックには、「pre-commit」、「pre-push」などの名前が付けられているため、シンボリックリンクされます。
.git/hooks/
を指すシンボリックリンクhooks/post-merge
はに解決されますが.git/hooks/hooks/post-merge
、これは存在しません。あなたが欲しいln -s -f ../../hooks/post-merge .git/hooks/post-merge
。またはあなたの人生を楽にしてください:ln -s -f ../hooks .git/hooks
。あなたの問題はgitとは何の関係もありません。