在發布項目到線上時,很多時候需要修改文档的權限,如果是使用 git 版本管理軟體來發布的話,那麽下次更新線上文档的時候就會提示文档沖突。明明文档沒有修改,爲什麽會沖突呢?原來 git 把文档權限也算作文档差異的一部分。下面筆者自己做了個簡單的例子來演示這種情況。
1、修改版本庫的文档的權限,然後使用 diff 查看下改變。
$ chmod 777 pack.php $ git diff pack.php [root@localhost php]‡ git diff pack.php diff --git a/php/pack.php b/php/pack.php old mode 100644 new mode 100755
git 文档權限修改示例
可以看到 git 把文档權限也列入了版本管理。
2、在另外一個地方 clone 這個版本庫,修改 pack.php 文档,然後提交。
3、在原版本庫下面更新内容。
[root@localhost php]# git pull Updating 804203e.. 4abe32e error: Your local changes to php/pack.php would be overwritten by merge Please, commit your changes or stash them before you can merge.
git 文档權限修改引起的沖突
可以看到提示沖突。
解決辦法:
git 中可以加入忽略文档權限的配置,具體如下:
$ git config core.filemode false
這樣就設置了忽略文档權限。查看下配置:
[root@localhost mycode]# cat .git/config [core] repositoryformatversion = 0 filemode = false bare = false logallrefuodates = true
git 忽略文档權限的配置
這時候再更新代碼就 OK 了。