在发布项目到线上时,不少时候须要修改文件的权限,若是是使用git版本管理软件来发布的话,那么下次更新线上文件的时候就会提示文件冲突。明明文件没有修改,为何会冲突呢?原来git把文件权限也算做文件差别的一部分。下面笔者本身作了个简单的例子来演示这种状况。php
一、修改版本库的文件的权限,而后使用diff查看下改变。git
$ chmod 777 pack.php $ git diff pack.php
git文件权限修改示例windows
能够看到git把文件权限也列入了版本管理。spa
二、在另一个地方clone这个版本库,修改pack.php文件,而后提交。code
三、在原版本库下面更新内容。orm
$ git pull
git文件权限修改引发的冲突it
能够看到提示冲突。版本管理
解决办法:软件
git中能够加入忽略文件权限的配置,具体以下:配置
$ git config core.filemode false
这样就设置了忽略文件权限。查看下配置:
$ cat .git/config
git忽略文件权限的配置
这时候再更新代码就OK了。
总结:
笔者我的理解版本管理更注重文件内容,比较好奇为何git将文件权限列入版本管理,估计是某些场景下有须要。笔者试了下文件全部者和全部组的修改不列入版本管理。另外在windows下git对文件权限是怎么处理的?