如果涉及到在多个系统里面操作,有可能会不经意间修改了文件的权限。
如果是使用git版本管理软件来管理的话,明明文件没有修改,也会因为文件权限而导致需要解决这些冲突,为什么呢,因为git把文件权限也算作文件差异的一部分。
如果权限的更改不纳入到版本可中,解决办法如下:
1 | $ git config core.filemode false |
这时候再更新代码就OK了。
处理权限
Unix系统对拥有者、组、其他几种用户都有明确的读写执行权限,这些在windows上没有对应的机制,这个问题在使用git时表现为没有修改文件却出现很多modified的文件,git status显示 typechange。一般出现在增加可执行权限的文件上。git对此也有一定的策略,可以设置core.filemode为false,这样就会忽略文件权限带来的改变。
1 | $ git config --add core.filemode false |
这样设置后就可以避免下面的问题出现
1 | diff --git a/a.py b/a.py |
如果clone前没有设置,导致已经进行了修改,可以用下面的命令来批量恢复这些修改。
1 | $ git status | grep typechange | awk '{print $2}' | xargs git checkout |