gitattributes

.gitattributes基本用法

  • 1.设置行尾字符:

你可以设置文本文件在检出时应该使用哪种行尾字符(LF、CRLF 或 auto)。这对于跨平台项目特别有用,因为 Windows 通常使用 CRLF 行尾,而 Unix 和 Linux 通常使用 LF 行尾。
text=auto
或者针对特定文件或目录:

1
2
somefile.txt text eol=lf
subdir/ text eol=crlf
  • 2.识别文本和二进制文件:

Git 默认会尝试将文件识别为文本或二进制文件,但你可以通过 .gitattributes 文件来明确指定。

1
2
*.png binary
# 或者*.png -text
  • 3.合并策略:

对于合并冲突,你可以为特定文件或目录设置不同的合并策略。
使用自定义的合并工具

1
*.c merge=mytool
  • 4.差异算法:

你可以为某些文件指定特定的差异算法,以改进 Git 显示的差异。
使用 word-diff 算法

1
*.doc diff=word
  • 5.导出过滤器:

当使用 git archive 命令创建归档时,你可以指定过滤器来修改导出的文件内容。

  • 6.Smudge/Clean 过滤器:

你可以设置 smudge 和 clean 过滤器,这些过滤器会在检出和提交时分别应用,用于修改文件内容。例如,你可以使用这些过滤器来加密和解密文件,或者在检出时自动转换文件格式。

  • 7.语言识别:

通过 .gitattributes 文件,Git 可以更好地识别某些文件的语言,从而改进代码统计和语法高亮等功能。

为了使用 .gitattributes 文件,你需要将其放置在仓库的根目录或任何子目录中。如果文件位于子目录中,它只会影响该子目录及其子目录中的文件。还可以在 .gitattributes 文件中使用模式匹配来指定哪些文件或目录应该应用这些属性。

.gitattributes 文件的更改不会影响已经提交到 Git 仓库的文件内容。这些更改只会影响未来的检出和提交操作。

gitattributes文件示例:

1
2
3
4
5
6
*           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。

-->

请我喝杯咖啡吧~

支付宝
微信