我有一个项目,在开发时,我必须将chmod文件的模式更改为777,但在主库中不应更改。
Git拿起了chmod-R777。并将所有文件标记为已更改。有没有办法让Git忽略对文件所做的模式更改?
我有一个项目,在开发时,我必须将chmod文件的模式更改为777,但在主库中不应更改。
Git拿起了chmod-R777。并将所有文件标记为已更改。有没有办法让Git忽略对文件所做的模式更改?
当前回答
If
git config --global core.filemode false
不适用于您,请手动执行:
cd into yourLovelyProject folder
cd到.git文件夹:
cd .git
编辑配置文件:
nano config
将true更改为false
[core]
repositoryformatversion = 0
filemode = true
->
[core]
repositoryformatversion = 0
filemode = false
保存,退出,转到上层文件夹:
cd ..
勒紧吉特
git init
你完蛋了!
其他回答
撤消工作树中的模式更改:
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
如果要为所有回购设置此选项,请使用--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
这可能有效:git-config-core.fileMode false
如果您已经使用了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”),将从中获取执行权限。