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

Git拿起了chmod-R777。并将所有文件标记为已更改。有没有办法让Git忽略对文件所做的模式更改?


当前回答

通过定义以下别名(在~/.gitconfig中),您可以轻松地临时禁用fileMode per git命令:

[alias]
nfm = "!f(){ git -c core.fileMode=false $@; };f"

如果在git命令前面加上此别名,则文件模式更改不会显示在其他命令中。例如:

git nfm status

其他回答

撤消工作树中的模式更改:

git diff --summary | grep --color 'mode change 100755 => 100644' | cut -d' ' -f7- | xargs -d'\n' chmod +x
git diff --summary | grep --color 'mode change 100644 => 100755' | cut -d' ' -f7- | xargs -d'\n' chmod -x

或以明吉计

git diff --summary | grep  'mode change 100755 => 100644' | cut -d' ' -f7- | xargs -e'\n' chmod +x
git diff --summary | grep  'mode change 100644 => 100755' | cut -d' ' -f7- | xargs -e'\n' chmod -x

或在BSD/macOS中

git diff --summary | grep --color 'mode change 100644 => 100755' | cut -d' ' -f7- | tr '\n' '\0' | xargs -0 chmod -x
git diff --summary | grep --color 'mode change 100755 => 100644' | cut -d' ' -f7- | tr '\n' '\0' | xargs -0 chmod -x

这对我有用:

find . -type f -exec chmod a-x {} \;

或相反,取决于您的操作系统

find . -type f -exec chmod a+x {} \;

您不需要更改配置文件。

只需运行:

git diff -G.

注意,后面的点不是句子的结尾,而是匹配所有内容的正则表达式,必须包含在内。

如果设置:sudo chmod 777-R

可以运行:git-config-core.fileMode false

你可以:https://www.w3docs.com/snippets/git/how-to-make-git-ignore-file-mode-changes.html

如果要为所有回购设置此选项,请使用--global选项。

git config --global core.filemode false

如果这不起作用,您可能使用的是更新版本的git,所以请尝试--add选项。

git config --add --global core.filemode false

如果在没有--global选项的情况下运行它,并且工作目录不是repo

error: could not lock config file .git/config: No such file or directory