为什么GitHub要求文件的末尾必须有换行符?
这几天逛reddit的时候发现了一个很有意思的讨论,有个童鞋说他在GitHub上提交代码的时候发现了提交文件被提示有一个红色警告的提示,鼠标移动上去会告诉你“No newline at end of file”(也就是文件末尾没有换行)。因此,他很奇怪,他不懂为什么GitHub要求文件的末尾必须有换行符。这个问题引起了很多的讨论。这里我也顺便记录共享一下。

这个问题在很早之前(大约12年前的2010年在StackOverflow上的问题)提问过了。文件末尾需要时空白行或者说最后一行内容必须以换行符结尾并不是一种强制性的要求,在GitHub里面也不算是一种错误,只是一种比较好的习惯。
在POSIX的规定中,对于文件的行(line)的定义如下:
