'git pull'设置664而不是644权限

时间:2014-03-07 01:09:49

标签: git file-permissions

从我读过的threads开始,git应该设置644 设计,这就是我想要的。但是,每当我git pull我的存储库时,它都会将权限更改为664。

我的本​​地磁盘的权限设置为644(我想要的)。如果我通过FTP和Filezilla上传,这些权限将保留在服务器上。

为什么我的权限会更改,有没有办法在不手动更改权限的情况下修复它?

1 个答案:

答案 0 :(得分:21)

您需要区分存储在git存储库中的权限和工作副本中文件的权限。您链接的其他问题的重点是这两件事情是不同的,因为 git不保留权限。

当你提交某些内容时,git会记住它是否可执行,而不是其他内容。签出文件时,您将获得由umask决定的文件权限。

Umask是一个进程属性,包含从新创建的文件中删除的权限位。 Git使用模式777创建目录和可执行文件,使用666创建非可执行文件,并且umask关闭其中一些位。如果您希望默认权限为644和755,则将umask设置为022:

umask 022

我将我保持在077 - 所有文件都是私有的,直到明确另有说明为止。由于git不保留权限的策略,我们都可以从同一个存储库中获取并在签出的文件中获取我们的首选默认值。

您首选的umask是包含在shell启动文件(.profile.zsh*.bash*等中的合适人选。)