git 拉取后更改项目中所有文件的用户和组

Change user and group of all files in project after git pull

如果我执行 git pullgit checkout

,用户和组总是更改为 root:root

所以我创建了包含以下内容的文件 .git/hooks/post-merge

#!/bin/sh

chown -R mycompany:www /srv/www/vhosts/mycompany

exec git-update-server-info

文件有执行权限

但是没有用,调用git pull后没有任何变化。

首先要检查:您的挂钩是否可执行?
作为 in this example

Run chmod +x post-merge to make it executable then put it into .git/hooks/.

然后在里面至少加一个echo,看看有没有执行。

请注意,挂钩只会在成功合并后 运行,这意味着如果拉动导致快进合并(HEAD 移动,不需要实际合并),则挂钩不会 运行 .

另一种方法是尝试 use setuid/setgid 强制处理(Git,作为 root)到 运行 作为正确的用户(先决条件:chown 设置对这些文件 user/group)