参考文档:
.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行,对任何文件,设置 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。
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 库的属性,它用于生成我们常见的语言分布