Linux环境中的Git pull更改文件的所有者

Linux环境中的Git pull更改文件的所有者

为什么每次我git pull在实时服务器上执行 a 时,文件的所有者都会更改?我继续手动执行chown john:john index.php.

我需要更改什么,以便当我执行 a 时git pull,文件的所有者将自动成为或保留john

答案1

当您使用git pull(相当于git fetch; git merge)时,git 创建新文件并且不关心以前的所有权(git 不存储该信息)。

有不同的解决方案来解决这个问题。更简单的方法可能是添加一个post-update钩子(在您的.git/hooks目录中)以chown john:john . -R在合并/拉取后自动调用(请参阅 SO 解决方案的示例)。

替代解决方案是:

  • git pull以 john 用户而不是 root 身份运行(这将需要 john 对 .git 目录的写入权限)。
  • 创建一个钩子来进行部署,它将使用 john 作为用户,或者在更新后执行 chown (因此您必须在裸存储库的钩子git pull内执行)。post-receive

在linux中,这可能是另一种解决方案setuid/setgid

相关内容