当做一个git差异,它说“没有换行在文件末尾”。
这条信息的意义是什么,它想告诉我们什么?
当做一个git差异,它说“没有换行在文件末尾”。
这条信息的意义是什么,它想告诉我们什么?
当前回答
它只是指出文件的末尾没有换行符。这不是一个灾难,这只是一个信息,让它更清楚地表明,在查看命令行中的差异时,不存在差异。
其他回答
您的原始文件可能没有换行符。
然而,一些编辑器,如linux中的gedit,会在文件末尾无声地添加换行符。在使用这种编辑器时,您无法删除此消息。
我试图克服这个问题的是用visual studio代码编辑器打开文件
这个编辑器清楚地显示了最后一行,您可以根据需要删除该行。
它只是指出文件的末尾没有换行符。这不是一个灾难,这只是一个信息,让它更清楚地表明,在查看命令行中的差异时,不存在差异。
这实际上会导致一个问题,因为行结束符会自动修改,而不会对文件进行任何更改。请参阅这篇文章以获得解决方案。
git用CRLF替换LF
有一件事我在之前的回答中没有看到。关于没有行尾的警告可能是在文件的一部分被截断时发出的警告。这可能是数据丢失的症状。
源文件通常由工具连接(C, c++:头文件,Javascript:捆绑器)。如果省略换行符,可能会引入令人讨厌的错误(一个源文件的最后一行与下一个源文件的第一行相连)。希望所有的源代码连接工具都在连接文件之间插入换行符,但情况并非总是如此。
问题的关键在于——在大多数语言中,换行符具有语义意义,而文件结束符并不是语言定义的换行符的替代品。因此,您应该用换行符结束每个语句/表达式——包括最后一个。