如何使Git忽略文件模式(chmod)更改?

马库斯·威斯汀

我有一个项目,开发时必须将文件模式更改chmod为777,但不应在主存储库中更改它。

Git启动chmod -R 777 .并标记所有文件为已更改。有没有办法让Git忽略对文件进行的模式更改?

格雷格·休吉尔

尝试:

git config core.fileMode false

git-config(1)

core.fileMode
    Tells Git if the executable bit of files in the working tree
    is to be honored.

    Some filesystems lose the executable bit when a file that is
    marked as executable is checked out, or checks out a
    non-executable file with executable bit on. git-clone(1)
    or git-init(1) probe the filesystem to see if it handles the 
    executable bit correctly and this variable is automatically
    set as necessary.

    A repository, however, may be on a filesystem that handles
    the filemode correctly, and this variable is set to true when
    created, but later may be made accessible from another
    environment that loses the filemode (e.g. exporting ext4
    via CIFS mount, visiting a Cygwin created repository with Git
    for Windows or Eclipse). In such a case it may be necessary
    to set this variable to false. See git-update-index(1).

    The default is true (when core.filemode is not specified
    in the config file).

-c标志可用于为一次性命令设置此选项:

git -c core.fileMode=false diff

并且该--global标志将使其成为已登录用户的默认行为。

git config --global core.fileMode false

全局设置的更改不会应用于现有存储库。此外,git clonegit init明确设置core.fileMode,以true在回购的配置在讨论Git的全球core.fileMode假的克隆覆盖的地方

警告

core.fileMode这不是最佳做法,应谨慎使用。此设置仅覆盖mode的可执行位,不覆盖读/写位。在许多情况下,您认为您需要此设置,因为您做了类似的操作chmod -R 777,使所有文件都可执行。但是在大多数项目中,出于安全原因,大多数文件不需要并且不应执行

解决这种情况的正确方法是分别处理文件夹和文件权限,例如:

find . -type d -exec chmod a+rwx {} \; # Make folders traversable and read/write
find . -type f -exec chmod a+rw {} \;  # Make files read/write

如果这样做的话core.fileMode,除非在非常罕见的环境中,否则就不需要使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Git不会忽略文件模式更改(chmod),为什么?

Git:如何忽略对跟踪文件的更改?

使git忽略文件更改

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

如何指定git只忽略匹配模式而不是目录的文件?

Git忽略本地文件更改

如何使Git忽略分支中文件的更改或删除?

如何忽略git控制文件本地的未决更改

如何停止跟踪并忽略对Git中文件的更改?

如何忽略对已提交到Git的文件的任何更改

使用Git提交时如何忽略对文件的更改?

如何使git忽略文件中大小写的更改?

如何忽略此文件模式?

如何使PHPUnit忽略文件模式?

git忽略更改但不删除文件

Git忽略了对跟踪文件部分的本地更改

Git-如何在不丢失更改的情况下将更改压入忽略的文件?

chmod。更改文件权限

如何从Git中未分级的更改中删除“旧模式100755新模式100644”文件?

如何告诉git(1)忽略更改和(2)放弃管理提交的文件

Git如何在更改分支时删除一些被忽略的文件

如何告诉 Git 忽略自上次暂存/提交以来文件中发生的更改?

如果仅更改空格和换行符,如何从“ git status”中忽略文件

如何在Git中停止跟踪文件,但允许在本地副本上对其进行“可忽略的”更改?

git,忽略 Laravel 中具有模式的文件

忽略“ git clone”中的fsck /零填充文件模式错误

git-忽略特定路径下的文件模式

即使文件被忽略,有关文件更改的Git警告?

如何使用os.chmod更改多个文件的权限