赞
踩
把一批 git 项目从一台设备拷到另一台设备之后,未对文件做任何修改,但是进入到项目的根目录下,执行
git status
却发现所有的文件状态都是modified
。感觉比较诡异
执行
git diff --summary
发现大多都是mode change 100644 => 100755
,原来是拷贝文件的过程中,文件的权限被自动修改了,权限值由644变成了755.这种情况如何处理呢?
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。