19

我一直注意到,当我从开发服务器(Red Hat)上的 github 存储库中拉取文件时,拉取完成后文件的所有权会发生变化。.git 文件曾经归我所有,但后来我注意到它会以我的身份写入文件,我需要它以不同的用户身份写入文件。所以我改变了 .git 目录的所有权。

我偶然发现了 git configcore.filemode这是真的。从那以后,我将其设置为假。将其设置为 false 后,我没有看到任何差异。我应该怎么做才能防止我的文件所有权发生变化。

这不会发生在我本地。

4

2 回答 2

40

如果足以保留组,您可以在目录上设置 setgid 标志。见http://en.wikipedia.org/wiki/Setuid

在目录上设置 setgid 权限(“chmod g+s”)会导致在其中创建的新文件和子目录继承其组 ID,而不是创建文件的用户的主组 ID(所有者 ID 永远不会受到影响,只有组 ID)。新创建的子目录继承 setgid 位。因此,这为组启用了共享工作空间,而无需在创建新文件或目录之前要求组成员显式更改其当前组的不便。请注意,对目录设置 setgid 权限仅影响设置 setgid 位后创建的新文件和子目录的组 ID,不适用于现有实体。在现有子目录上设置 setgid 位必须手动完成,使用如下命令:

[root@foo]# find /path/to/directory -type d -exec chmod g+s '{}' \;

于 2015-04-24T04:46:39.913 回答
9

Git 不是部署服务器。它以编写文件的人的身份写入文件,那就是你。如果您需要设置权限和所有权,您可以制作一个结帐后挂钩并让它读取配置文件或其他内容来决定下一步做什么。

于 2013-02-25T21:08:13.193 回答