0


拷贝git项目后文件权限莫名其妙被修改(mode change 100644 => 100755),该如何处理?

把一批 git 项目从一台设备拷到另一台设备之后,未对文件做任何修改,但是进入到项目的根目录下,执行

git status

却发现所有的文件状态都是

modified

感觉比较诡异

执行

git diff --summary

发现大多都是

mode change 100644 => 100755

,原来是拷贝文件的过程中,文件的权限被自动修改了,权限值由644变成了755.

这种情况如何处理呢?

关闭 git 的 filemode

  • 全局关闭
git config --global core.filemode false
  • 单项目关闭
git config core.filemode false

修改文件的权限(推荐使用这个方法)

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
 git diff --summary | grep --color 'mode change 100644 => 100755'                 
 mode change 100644 => 100755 .gitignore
 mode change 100644 => 100755 Makefile
 mode change 100644 => 100755 pom.xml
  • cut -d' ' -f7-

对文本进行用 空格 进行切割取出第7列值(下标从1开始,f1为完整的字符窜)。也就是文件的全路径。

git diff --summary | grep --color 'mode change 100644 => 100755' | cut -d' ' -f7-
.gitignore
Makefile
pom.xml
  • tr '\n' '\0'

把分割符由

\n

变为

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

\0

作为定界符

修改所有满足条件的文件的文件权限

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 100644 => 100755' | cut -d' ' -f7-

相反操作

给文件加权限

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

本文转载自: https://blog.csdn.net/uwoerla/article/details/131058037
版权归原作者 DevOps前进四 所有, 如有侵权,请联系我们删除。

“拷贝git项目后文件权限莫名其妙被修改(mode change 100644 => 100755),该如何处理?”的评论:

还没有评论