git 钩子函数 以及解决 git 操作后文件权限变化
git pull 文件权限
1、进入项目根目录.git
目录
cd .git/hooks/
2、新建 post-merge
文件
vim post-merge
3、写入钩子内容
#!/bin/sh
# 在写入你自定义操作命令
# echo "This is post-merge hook"
# composer install
# 缓存操作
echo "Processing cache"
php artisan cache:clear
php artisan optimize:clear
# php artisan config:cache
# php artisan route:cache
# php artisan view:cache
php artisan optimize
# 注意: 请把权限操放在最后一步
chmod -R 755 /you/host/path/
chown -R nobody.nobody /you/host/path/
chmod -R 777 /you/host/path/storage/
echo "File permissions have been reset!"
4、给予运行权限
chmod +x post-merge
或 在hooks目录下
chown -R nobody.nobody ./*
git checkout 文件权限
1、进入 .git 目录
cd .git/hooks/
2、新建 post-checkout
文件
vim post-checkout
3、写入钩子内容
#!/bin/sh
# 你的自定义命令
# pwd
# echo "This is post-merge hook"
chmod -R 755 ./* && chown -R nobody.nobody ./* && chmod -R 777 ./storage/*
4、给予运行权限
chmod +x post-merge
或 在hooks目录下
chown -R nobody.nobody ./*
其他git钩子函数
Git 钩子(Git Hooks)是在特定的 Git 事件发生时触发的自定义脚本。这些脚本可以用于执行自定义操作,例如在提交前验证代码、在推送后触发自动化测试等。以下是 Git 钩子的一些常见类型:
pre-commit: 在执行
git commit
之前触发。用于在提交前执行一些验证或格式化操作。prepare-commit-msg: 在
git commit
执行之前,用于编辑提交消息。commit-msg: 在
git commit
执行之后,用于验证或修改提交消息。post-commit: 在
git commit
执行之后触发。用于执行与提交相关的后处理操作。pre-rebase: 在执行
git rebase
之前触发。用于在变基前执行一些操作。post-merge: 在执行
git pull
或git merge
之后触发。用于执行合并后的操作,如更新子模块或更改文件权限。post-checkout: 在执行
git checkout
之后触发。用于执行检出后的操作,如更新依赖项或配置文件。pre-push: 在执行
git push
之前触发。用于在推送前执行一些验证或测试操作。post-receive: 在远程仓库接收到推送后触发。通常用于在远程仓库上执行一些后处理操作。
pre-tag: 在执行
git tag
之前触发。用于在创建标签前执行一些操作。post-rewrite: 在执行
git commit --amend
、git rebase
或其他改写历史的操作后触发。