git diff 认为文件的最后一行已在文件末尾移动?

Mic*_*ker 6 git line-endings

从 Github 克隆一个 git 存储库后,如果我打开一个文件,不做任何更改并保存该文件,则输出中将显示以下内容git diff

-@import "sync.scss";
\ No newline at end of file
+@import "sync.scss";
Run Code Online (Sandbox Code Playgroud)

据我了解,\ No newline at end of file应该在没有换行符时标记文件的结尾。此差异是否意味着 git 认为最后一行已移至文件末尾之后? 有什么办法可以避免这种情况吗?我想为这个项目做出贡献,而不会在我的提交中添加垃圾空白更改。

这似乎是行尾的问题。我相当确信该文件最初是使用 Unix 行结尾保存在 Mac 上的。这与我正在使用的设置相同,所以我不确定是什么导致文档在我保存时发生更改。

Sai*_*esh 6

  • 为避免这种情况,请始终执行git add -p,并仅选择相关差异以避免提交不需要的更改。

  • 并更改您的编辑器设置以匹配项目中使用的约定。


l4m*_*mpi 5

\ No newline at end of file属于它上面的线(意味着线不与一个结束\n)。您当前行的末尾似乎有一个换行符,这就是为什么您在其后看不到“无换行符”消息的原因;以及为什么会有变化。

我想为这个项目做出贡献,而不会在我的提交中添加垃圾空白更改。

(警告:以下个人意见)

我建议您始终以换行符结束文件,尤其是在 unix/linux 环境中工作时。可能这被某些人视为“垃圾”(请向项目维护者询问他对此的意见以确保),但是在使用 posix 工具时 - 从一个简单的开始cat- 缺少换行符充其量只会令人讨厌并且会中断脚本在最坏的情况下转换代码。