利用Michael Cihar的评论,这是我编写的bash脚本示例,用于简单地创建这些符号链接。该脚本位于项目根目录下的git_hooks /目录中。我的.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 /目录中未带有文件扩展名的任何文件。我在此目录+此脚本(名为symlink.sh)中具有README.txt。所有实际的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无关。