参考文档:
.gitattributes 正确使用姿势
Git的gitattributes文件详解

1. gitattributes 介绍

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

gitattributes 文件以行为单位设置一个路径下所有文件的属性。

在实际运用中,gitattributes 主要用来规范代码行尾换行的一致性(LF/CRLF)。

2. 使用方法

2.1 示例一

*           text=auto
*.txt		text
*.jpg		-text
*.vcproj	text eol=crlf
*.sh		text eol=lf
*.py		eol=lf
  1. 第1行,对任何文件,设置 text=auto,表示文件的行尾自动转换。如果是文本文件,则在文件入 Git 库时,行尾自动转换为 LF。如果已经在入 Git 库中的文件的行尾为 CRLF,则该文件在入 Git 库时,不再转换为 LF。
  2. 第2行,对于 txt 文件,标记为文本文件,并进行行尾规范化。
  3. 第3行,对于 jpg 文件,标记为非文本文件,不进行任何的行尾转换。
  4. 第4行,对于 vcproj 文件,标记为文本文件,在文件入 Git 库时进行规范化,即行尾为 LF。但是在检出到工作目录时,行尾自动转换为 CRLF。
  5. 第5行,对于 sh 文件,标记为文本文件,在文件入 Git 库时进行规范化,即行尾为 LF。在检出到工作目录时,行尾也不会转换为CRLF(即保持LF)。
  6. 第6行,对于 py 文件,只针对工作目录中的文件,行尾为 LF。

2.2 示例二

# 为所有文件规范行尾,工作目录保持为 lf
* text=auto eol=lf
# 不要修改二进制文件的行尾(有时 git 会自动将其检测为文本文件)
*.png binary
# 不跟踪 diff 差异
test/mjsunit/asm/sqlite3/*.js -diff

2.3 示例三

# Linguist language overrides
*.js linguist-language=JavaScript
*.jsm linguist-language=JavaScript
*.inc linguist-language=XML

linguist-language 是 Linguist 库的属性,它用于生成我们常见的语言分布

语言分布