0%

Git关于文件权限修改引起的冲突及忽略文件权限的办法

如果涉及到在多个系统里面操作,有可能会不经意间修改了文件的权限。

如果是使用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
2
3
diff --git a/a.py b/a.py
old mode 100755
new mode 100644

如果clone前没有设置,导致已经进行了修改,可以用下面的命令来批量恢复这些修改。

1
2
$ git status | grep typechange | awk '{print $2}' | xargs git checkout

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道