转自:Git的gitattributes文件详解

Git的gitattributes文件是一个文本文件,文件中的一行定义一个路径的若干个属性。

1. gitattributes文件以行为单位设置一个路径下所有文件的属性,格式如下:

  1. 要匹配的文件模式 属性1 属性2 ...

2. 在gitattributes文件的一行中,一个属性(以text属性为例)可能有4种状态:

  • 设置text
  • 不设置-text
  • 设置值text=string
  • 未声明,通常不出现该属性即可;但是为了覆盖其他文件中的声明,也可以!text

3. gitattributes文件示例:

  1. *               text=auto
  2. *.txt       text
  3. *.jpg       -text
  4. *.vcproj    text eol=crlf
  5. *.sh        text eol=lf
  6. *.py        eol=lf

说明:

第1行,对任何文件,设置text=auto,表示文件的行尾自动转换。如果是文本文件,则在文件入Git库时,行尾自动转换为LF。如果已经在入Git库中的文件的行尾为CRLF,则该文件在入Git库时,不再转换为LF。

第2行,对于txt文件,标记为文本文件,并进行行尾规范化。

第3行,对于jpg文件,标记为非文本文件,不进行任何的行尾转换。

第4行,对于vcproj文件,标记为文本文件,在文件入Git库时进行规范化,即行尾为LF。但是在检出到工作目录时,行尾自动转换为CRLF。

第5行,对于sh文件,标记为文本文件,在文件入Git库时进行规范化,即行尾为LF。在检出到工作目录时,行尾也不会转换为CRLF(即保持LF)。

第6行,对于py文件,只针对工作目录中的文件,行尾为LF。

4. 在一个Git库中可以有多个gitattributes文件:

  • 不同gitattributes文件中,属性设置的优先级(从高到低):

/myproj/info/attributes文件
/myproj/my_path/.gitattributes文件
/myproj/.gitattributes文件

  • 同一个gitattributes文件中,按照行的先后顺序,如果一个文件的某个属性被多次设置,则后序的设置优先

5. 也可以为所有Git库设置统一的gitattributes文件:

  1. git config --get core.attributesFile
  2. git config --global --get core.attributesFile

6. gitattributes文件中可以定义的属性:

  • text,控制行尾的规范性。

如果一个文本文件是规范的,则Git库中该文件的行尾总是LF。

对于工作目录,除了text属性之外,还可以设置eol属性,或core.eol配置变量。

  • eol,设置行末字符

    • eol=lf,入库时将行尾规范为LF,检出时禁止将行尾转换为CRLF
    • eol=crlf,入库时将行尾规范为CRLF,检出时将行尾转换为CRLF
  • crlf,已过时,类似于text
  • ident,为路径设置ident属性,路径中的blob对象中的$Id$将会被替换为$Id:char_40_hexadecimal_name
  • filter

利用命令clean,smudge

  • diff
  • merge,与merge.default配置变量一起确定如何合并文件

在执行git merge, git revert和git cherry-pick时,如何考虑文件的版本
Git内置的merge驱动:

    • merge=text
    • merge=binary
    • merge=union
  • whitespace,对应core.whitespace配置变量

在执行git diff, git apply时是否考虑空格。

  • export-ignore,export-subst,打包相关的属性
  • delta,即Delta压缩

对于delta=false的路径中的blob对象,不会进行Delta压缩

  • encoding,为GUI工具(如gitk, git-gui)设置字符编码,以正确显示匹配的文件内容

如果该属性未设置,或设置了无效值,则GUI工具会使用配置变量gui.encoding的值。

参考链接:

https://git-scm.com/docs/gitattributes

 

Git的gitattributes文件详解的更多相关文章

  1. SUBLIME TEXT 2 设置文件详解

    SUBLIME TEXT 2 设置文件详解 Preferences.sublime-settings文件: // While you can edit this file, it’s best to ...

  2. Angular Npm Package.Json文件详解

    Angular7 Npm Package.Json文件详解   近期时间比较充裕,正好想了解下Angular Project相关内容.于是将Npm官网上关于Package.json的官方说明文档进行了 ...

  3. vue-cli生成的模板各个文件详解(转)

    vue-cli脚手架中webpack配置基础文件详解 一.前言 原文:https://segmentfault.com/a/1190000014804826 vue-cli是构建vue单页应用的脚手架 ...

  4. Windows系统Git安装教程(详解Git安装过程)

    Windows系统Git安装教程(详解Git安装过程)   今天更换电脑系统,需要重新安装Git,正好做个记录,希望对第一次使用的博友能有所帮助! 获取Git安装程序   到Git官网下载,网站地址: ...

  5. web.xml文件详解

      web.xml文件详解 Table of Contents 1 listener. filter.servlet 加载顺序 2 web.xml文件详解 3 相应元素配置 1 listener. f ...

  6. Linux中/proc目录下文件详解

    转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...

  7. [转]AndroidManifest.xml文件详解

    转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...

  8. delphi 资源文件详解

    delphi资源文件详解 一.引子: 现在的Windows应用程序几乎都使用图标.图片.光标.声音等,我们称它们为资源(Resource).最简单的使用资源的办法是把这些资源的源文件打入软件包,以方便 ...

  9. VSFTPD全攻略(/etc/vsftpd/vsftpd.conf文件详解)

    /etc/vsftpd/vsftpd.conf文件详解,分好类,方便大家查找与学习 #################匿名权限控制############### anonymous_enable=YE ...

随机推荐

  1. ASP.NET在请求中检测到包含潜在危险的数据,因为它可能包括 HTML标记或脚本

    背景:程序迁移到新的服务器上,在程序进行修改操作时,提示包含危险数据.然而在旧服务器上却没有问题,我猜想的可能是,新服务器IIS安装的ASP.NET版本框架高于以前的IIS上的版本框架,导致web.c ...

  2. hdu A Magic Lamp

    http://acm.hdu.edu.cn/showproblem.php?pid=3183 A Magic Lamp Time Limit: 2000/1000 MS (Java/Others)   ...

  3. oracle 游标简单案例

    oracle  游标简单案例 一.案例: DECLARE IDO NUMBER; DABH CHAR); t_count ); CURSOR TJ_CURSOR IS SELECT IDO,DABH ...

  4. Day 9 函数的初识1

    def my_len(): l1 = [1,2,3,5,6] print(111) print(222) return print(333)print(my_len()) 一.函数的定义1.遇到ret ...

  5. Day 7 深copy和浅Copy

    dict.fromkeys的用法 1 2 3 4 5 6 7 8 9 10 11 #dict.fromkeys的用法 #例子1 dic = dict.fromkeys([1,2,3],[]) prin ...

  6. 20164317《网络对抗技术》Exp1 PC平台逆向破解

    实验目的: 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getSh ...

  7. laravel 的passport Oauth 认证登录请求 的 oauth_token 重置

    laravel 的passport Oauth 认证登录请求 的 oauth_token 重置    使用API登录认证是需要获取访问令牌,方法为: 参数: grant_type —— 密码模式固定为 ...

  8. 六,apache修改默认根文件路径

    1,安装完apache后,项目默认根路径是E:\Program Files\AppServ\www. 默认根路径在httpd.conf中默认配置过了,我们可以通过修改配置文件改变项目默认根路径. Do ...

  9. 用xshell ssh连接测试服务器时候出的问题

    问题还原:用ssh连接测试服务器 给我结结实实报了个错 FBIwarning: ------------------------------------------------------------ ...

  10. Ubuntu 16.04下的安装RabbitMQ

    安装 添加源 echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/ra ...