问题列表
- 不同系统(
windows|linux|macos)之间协作git遇到问题:
[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF - git撤销未提交的修改
- git提交目录,但是忽略目录中的文件
问题说明
[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF
遇到该错误,是由于GIT的换行符检查功能造成的。主要原因是不同的系统,使用的换行符不同。
windows使用回撤+换行两个字符来表示一行的结束。
Macos or Linux使用换行一个字符,来表示结束一行。
-
core.safecrlf配置项,是换行符检查功能,可以在提交是检查文件是否混用了不同的换行风格的换行符,功能选项:
false:不做任何检查
warn:在提交时检查并警告
true:在提交时检查,如果发现混用则拒绝提交
配置形式:# git config --global core.safecrlf false -
core.autocrlf自动将CRLF转换成LF选项配置。
Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF:
# git config --global core.autocrlf true
Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:
# git config --global core.autocrlf input
如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:
# git config --global core.autocrlf false
GIT撤销未提交的修改
恢复某个已修改的文件(撤销未提交的修改):git checkout file-name
git提交目录,但是忽略目录中的文件
前提是目录中的文件未提交
空目录,git会自动排除提交的,因此,我们要将该目录变为不空的,但是又要忽略目录中的其他文件提交,所以就要用到git的忽略提交:.gitkeep。
比如,有目录:runtime,目录下有文件1.log、2.log、3.log。
需要提交runtime目录,但是不提交1.log、2.log、3.log。
mkdir runtime && touch log/.gitkeep && git add log/.gitkeep即可。