git關於文件權限修改引發的衝突及忽略文件權限的辦法

在發佈項目到線上時,不少時候須要修改文件的權限,若是是使用git版本管理軟件來發布的話,那麼下次更新線上文件的時候就會提示文件衝突。明明文件沒有修改,爲何會衝突呢?原來git把文件權限也算做文件差別的一部分。下面筆者本身作了個簡單的例子來演示這種狀況。php

一、修改版本庫的文件的權限,而後使用diff查看下改變。git

$ chmod 777 pack.php
$ git diff pack.php

git文件權限修改示例

git文件權限修改示例windows

能夠看到git把文件權限也列入了版本管理。spa

二、在另一個地方clone這個版本庫,修改pack.php文件,而後提交。code

三、在原版本庫下面更新內容。orm

$ git pull

git文件權限修改引發的衝突

git文件權限修改引發的衝突it

能夠看到提示衝突。版本管理

解決辦法:軟件

git中能夠加入忽略文件權限的配置,具體以下:配置

$ git config core.filemode false

這樣就設置了忽略文件權限。查看下配置:

$ cat .git/config

git忽略文件權限的配置

git忽略文件權限的配置

這時候再更新代碼就OK了。

總結:

筆者我的理解版本管理更注重文件內容,比較好奇爲何git將文件權限列入版本管理,估計是某些場景下有須要。筆者試了下文件全部者和全部組的修改不列入版本管理。另外在windows下git對文件權限是怎麼處理的?

相關文章
相關標籤/搜索