git文件夹权限及自动换行配置

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    autocrlf = false
    safecrlf = false
[remote “origin”]
    url = git@gitlab.synaptics.com:cordless/CMBS_Lite.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch “master”]
    remote = origin
    merge = refs/heads/master
    [branch “_CL_2.01”]
    remote = origin
    merge = refs/heads/B_CL_2.01

忽略文件夹权限
filemode = false

不进行自动换行处理
autocrlf = false
safecrlf = false

命令行操作
查看filemode选项
    git config –get core.filemode

    git config core.filemode
设置filemode选项
    git config core.filemode true


以下转自git: 行尾crlf换行符\n与\r\n处理,文件属性
git config –global core.autocrlf true // 表示自动更换crlf,windows下如果checkout是\n,则自动换为\r\n,在提交时在自动换回\n
git config –global core.autocrlf input // 自动把\r\n换为\n
git config –global core.autocrlf false // 就是不作处理
如果已经产生了\r\n,merge时产生问题,可以设置
git config merge.renormalize true // merge时忽略行尾对比
如果只需要执行一次merge可以是用命令
git merge -s recursive -X ignore-space-at-eol origin/master
还可以设置crlf安全检查
git config –global core.safecrlf true // 禁止提交混合\n和\r\n的文件
git config –global core.safecrlf false // 允许提交
git config –global core.safecrlf warn // 提交时产生警告

如果经常产生文件属性变更的情况,可以设置
git config –global core.filemode false

以下转自git中忽略文件权限或文件拥有者的改变
在发布项目到线上时,很多时候需要修改文件的权限,如果是使用git版本管理软件来发布的话,那么下次更新线上文件的时候就会提示文件冲突。明明文件没有修改,为什么会冲突呢?原来git把文件权限也算作文件差异的一部分。下面笔者自己做了个简单的例子来演示这种情况。

1、修改版本库的文件的权限,然后使用diff查看下改变。

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

git文件权限修改示例

可以看到git把文件权限也列入了版本管理。

2、在另外一个地方clone这个版本库,修改pack.php文件,然后提交。

3、在原版本库下面更新内容。

$ git pull

git文件权限修改引起的冲突

可以看到提示冲突。

解决办法:

git中可以加入忽略文件权限的配置,具体如下:

$ git config core.filemode false // 当前版本库
$ git config –global core.fileMode false // 所有版本库
这样就设置了忽略文件权限。查看下配置:

$ cat .git/config // 查看git的配置文件
git忽略文件权限的配置

这时候再更新代码就OK了。

发表评论

邮箱地址不会被公开。 必填项已用*标注