最近在使用 Git 提交代码的时候;老是碰到一段看起来 “没有任何改动” 的代码;被 diff 检测出异常;很是苦恼;特别是项目紧急的时候;不敢用 VSCode 编辑了;只能用 vim 进行少量代码的修改、上库。
另一件事是 shell 脚本文件行尾换行符异常;导致在 linux 环境下无法正常运行;总是提示什么语法错误。
如果使用 VSCode ;可以通过右下角确认当前文件行尾换行符格式
另一种方法是;通过 vim 打开文件;使用如下命令;确认当前文件格式
# dos: Windows 行尾换行符格式
# unix: Linux 行尾换行符格式
set ff
我直接用的 git bash 中的 vim 打开此文件;可以发现白色背景行直接提示出来了当前文件格式。
在遇到之前的问题时;也去网上查了不少资料;下面几篇是我当时参考的
行尾换行符是什么?通过资料得知;就是文件每一行结尾的换行符号。
对于 Windows 系统来说;使用的 CRLF ;也就是 ;回车换行;。
但是对于 Linux 、Mac 来说;使用的为 LF ;也就是 ;换行;。
这两个符号的差异;会导致文件格式不同。
比如会导致 CRLF 的文件;想要在 Linux 系统执行;就会出问题。
举例来说;我在 Windows 下新建一个 Shell 脚本文件;行尾换行符是 CRLF 格式的;那么此时放到 Linux 系统执行;是会报错;无法执行的。
我的实际开发环境是这样的;
1、本地电脑是 Windows 10 环境;使用 VSCode 开发;
2、代码存储、编译使用的 Linux 服务器;Ubuntu 16.04 环境;
3、Windows 与 Linux 环境下均安装 Git 管理工具;
此时就有两个环境的 Git 需要配置;目前我的配置如下;已经可以正常使用了;;;
Windows 环境下 Git 相关配置如下
# Windows 打开 autocrlf
# pull 时转换为 CRLF ;push 时转换为 LF
core.autocrlf=true
Linux 环境下 Git 相关配置如下
# Linux 环境关闭 autocrlf
core.autocrlf=false
# Linux 打开 safecrlf 配置;确保同一份文件只有一种统一的行尾换行符
# 如果不一致;diff 会提示差异
core.safecrlf=true
通过上述配置;这里就可以顺利的提交代码啦~