Git 属性杂谈
文章目录
介绍
gitattributes - Defining attributes per path
官文文档中对 Git 属性的定义就是每个路径的属性。
Git 属性支持的功能比较多:识别为文本或二进制、文本文件换行符转换、合并策略、差异显示等等。
文本与二进制
Git 对文本与二进制文件的处理是不同的:
- 文本文件会显示出修改的差异,并且在合并时会按照行进行合并
- 二进制文件不显示修改的差异,在合并时会提示文件冲突,需要人工介入
Git 内部会自动根据扩展名识别文本与二进制文件,但是一些文本文件是由机器产生的,Git 会将其视作文本文件而自动进行合并,这会导致文件损坏,并且这种情况很难察觉。
推荐将所有文件取消文本属性,然后根据项目的需要将部分文件开启文本属性,.gitattributes
|
|
换行符转换
Git 默认会对文本文件进行换行符转换,默认情况下在提交时转换为 LF,检出时根据当前平台转换为 LF 或 CRLF。这里强烈建议 Git 仓库有自己独立的设置,而不受 Git 全局配置的影响,否则文件的内容在不同的机器上会出现不同。
另外,如果想要规避 Unity 的编译警告:
|
|
建议设置 .gitattributes
,统一设置 C# 文件换行符为 Windows 换行符 CRLF
|
|
模板
大部分 Git 仓库都会添加对应的 .gitignore
文件,并且使用在线网站生成此文件,例如:gitignore.io
其实 .gitattributes
也应该这样做,现在已经有这样的网站了:gitattributes.io