在發佈項目到線上時,不少時候須要修改文件的權限,若是是使用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對文件權限是怎麼處理的?