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

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


当前回答

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

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

其他回答

如果您已经使用了chmod命令,请检查文件的差异,它显示以前的文件模式和当前的文件模式,例如:

新模式:755

旧模式:644

使用以下命令设置所有文件的旧模式

sudo chmod 644。

现在使用命令或手动在配置文件中将core.fileMode设置为false。

git config core.fileMode false

然后应用chmod命令更改所有文件的权限,例如

sudo chmod 755 .

并再次将core.fileMode设置为true。

git config core.fileMode true

对于最佳实践,不要始终保持core.fileMode为false。

添加到Greg Hewgill答案(使用core.fileMode配置变量):

您可以使用git更新索引(“gitadd”的低级版本)的--chmod=(-|+)x选项来更改索引中的执行权限,如果您使用“gitcommit”(而不是“gitcommit-a”),将从中获取执行权限。

如果设置:sudo chmod 777-R

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

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

简单的解决方案:

在项目文件夹中单击此简单命令(它不会删除原始更改)。。。它只会删除在您更改项目文件夹权限时所做的更改

命令如下:

git-config-core.fileMode false

为什么修改这些不必要的文件:因为您已更改项目文件夹权限带着赞扬sudo chmod-R 777/您的项目文件夹

你什么时候检查你没有做的更改?您在使用gitdiff文件名时发现如下

old mode 100644
new mode 100755

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

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