git默认自动识别哪些文件是文本文件,自动在不同系统之间转换文件格式。
回车换行格式有三种:
- windows 回车换行(\r\n)
- unix/linux 换行(\n)
- Mac 回车(\r)
git默认提交文件时改为unix/linux格式,获取时则改为本地文件格式。我们知道ftp工具为了正确处理文件格式可以使用三种不同的模式来传输:强制文本、强制二进制、根据文件扩展名处理,git也差不多,git库可以控制,用户也可以单独控制,为了统一,最好用git库控制。
目录
.gitattributes
官方示例
完整示例
另:提防.gitignore
.gitattributes
git库控制的方法是在git库根目录添加一个“.gitattributes”文件,在里面设置处理方式,该文件会覆盖用户自己的设置。
官方示例
官方示例:
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.c text
*.h text
# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
完整示例
我根据FTP工具的设置设置了这个文件:
# Set the default behavior, in case people don't have core.autocrlf set.
* -text
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.*html text
*.htm text
*.txt text
*.php text
*.php3 text
*.cgi text
*.c text
*.cpp text
*.h text
*.pas text
*.bas text
*.tex text
*.pl text
*.js text
*.htaccess text
*.xtml text
*.css text
*.cfg text
*.ini text
*.sh text
*.xml text
*.mk text
*.sql text
# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
注意,重点是将*的处理方式改为“-text”禁用自动处理。
另:提防.gitignore
如果合并不同来源的代码,最好检查一下有多少个.gitignore,以防止错误的设置导致文件没有签进去。
如果确认全部都要签入,最好删掉所有的.gitignore。