git:如何配置git以忽略文件权限更改


21

我在Linux服务器中有一些git项目。

我使用Mac和linux进行编程。问题是,mac文件系统的权限无法像在linux中那样很好地工作,因此所有文件似乎都位于umask 0755上。因此,每当我在我的mac上提取我的代码时,都git status表明我的所有文件均已更改以及在使用git diff时显示唯一的更改是在umask中。我怎样才能告诉git不存储并检查umask更改?

谢谢!


1
我非常确定OS X支持Unix样式的权限...
grawity 2011年

1
umask和权限不是一回事。您确定您真的知道您在这里做什么吗?
Marnen Laibow-Koser 2014年

Answers:


28

core.fileMode配置属性设置为false。您可以使用以下命令轻松完成此操作:

git config core.fileMode false

这是每个存储库的设置,还是可以在全球范围内进行?
acme 2012年

2
@acme:与所有git设置一样,您可以通过不传递任何额外的开关--global,或来针对每个存储库,每个用户或整个系统进行设置--system。有关git help config详细信息,请参见。
2012年

谢谢!但是,全局设置并不会自动将此设置添加到新存储库中,这仅仅是我本地计算机上的设置吗?
acme 2012年

@acme:是的,将选项设置为--global会影响使用您的本地用户帐户访问的任何存储库上的所有操作。它不会影响其他任何人。要为特定存储库的所有用户设置它,您必须在每个人都推送到的服务器上切换每个存储库设置。
2012年

1

我有一个小的shell脚本来切换

猫〜/ bin / git-ignore-chmod-toggle

#!/bin/bash
# Copyright 2015 Alexx Roche, MIT license.
# based on http://superuser.com/a/261076

gitCHMODstate=$(git config --get core.fileMode)

# toggle with git config core.fileMode true 

if [ $gitCHMODstate == 'true' ];then
    echo "git now ignores file mode (chmod)"
    git config core.fileMode false
else
    echo "git not looks for files modes changed with chmod"
    git config core.fileMode true
fi

有了这个,我可以切换git,检查其他更改,然后快速恢复。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.