在开发中,我们会使用git
来做版本管理,我们主要是用来管理文件的内容,今天首次发现git
还可以记录文件的权限修改,特地记录下。
比如,如下这个文件,没有修改前权限是644
:
1 | $ ll |
现在,我们修改成755
:
1 | chmod 755 webpack.mix.js |
查看git
记录,里面已经记录了:
1 | git status |
通过diff
看看修改内容:
1 | git diff webpack.mix.js |
644
和755
最大的区别就是多了一个可执行
权限:
1 | rw- r-- r-- 644 |
我们再来试着修改成其他不涉及可执行
的权限,先把修改的文件撤销:
1 | git restore webpack.mix.js |
我再设置成666
:
1 | chmod 666 webpack.mix.js |
查看git
有没有记录:
1 | git status |
发现是没有记录的,接着我又试了其他权限,比如655
,654
,仍然是不会记录。
通过以上的实验发现,git
中只记录对于当前用户的可执行
权限的记录,比如当前用户原来没有执行权限,添加执行权限后,git
就会记录,撤销执行权限也会记录,但对于当前用户组或其他用户是不会记录的。
这就导致我们在拷贝文件过程中,会发现一个没有修改的文件也被git
标记成unstaged file
,原因可能就是权限被修改造成的,同时,由于Linux/Mac
和Windows
中,文件的权限是有差别的,互相复制拷贝也会出现这种情况。所以可以的话还是建议关闭这个功能。
这个功能是默认开启的,可以手动关闭这个功能:
1 | git config --local core.fileMode false |
--local
只针对当前项目,如果需要全局,可以替换成--global
,使用如下命令可以查看当前模式:
1 | git config --get --local core.filemode |