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 钩子的一些常见类型:
  1. pre-commit: 在执行 git commit 之前触发。用于在提交前执行一些验证或格式化操作。

  2. prepare-commit-msg:git commit 执行之前,用于编辑提交消息。

  3. commit-msg:git commit 执行之后,用于验证或修改提交消息。

  4. post-commit:git commit 执行之后触发。用于执行与提交相关的后处理操作。

  5. pre-rebase: 在执行 git rebase 之前触发。用于在变基前执行一些操作。

  6. post-merge: 在执行 git pullgit merge 之后触发。用于执行合并后的操作,如更新子模块或更改文件权限。

  7. post-checkout: 在执行 git checkout 之后触发。用于执行检出后的操作,如更新依赖项或配置文件。

  8. pre-push: 在执行 git push 之前触发。用于在推送前执行一些验证或测试操作。

  9. post-receive: 在远程仓库接收到推送后触发。通常用于在远程仓库上执行一些后处理操作。

  10. pre-tag: 在执行 git tag 之前触发。用于在创建标签前执行一些操作。

  11. post-rewrite: 在执行 git commit --amendgit rebase 或其他改写历史的操作后触发。