git autocrlf设置的明确build议

我每天都使用Windows,Mac OS X和Linux。 在所有这些环境中,我都使用git,从回收中提取不同select的人用于行尾。

在我的情况下,是否有确定的build议来设置core.autocrlf?

我会build议,就像我在这个SO问题中所做的那样,将其设置为false。

如果你可以避免修改任何eol(用你的编辑器),那么最好把你的工作推回原来的版本(即“如你find它们”)。

在这些讨论中经常没有提到的一个问题是:如果你在Windows上开发shell脚本(比如说,在cygwin中)并且用CRLF(autocrlf = false)提交它们,它们会在* nix盒子上崩溃并显示无用的错误消息。 (其他脚本语言可能会有类似的情况。)半小时后,你会记住,然后dos2把这些小stream氓搞定。 如果你在一个混合的环境中工作(比如说从Windows到Linux服务器的部署),并且绝对要将autocrlf设置为false,那么请确保所有的窗口编辑器都使用了unix(lf)行结束符。 否则,设置autocrlfinput(和祈祷)。 大多数21世纪的Windows程序都很舒适,没有20世纪80年代早期的行式打印机CR,因此无论如何将行结束符设置为LF(unix)是一个好主意。

GIT不会有两个文本文件具有相同的文本,但在二进制表示内部不同的行结束(EOL)机制的公共SHA1。 内容被存储为一个blob,如果另一个相同的副本被定位到reposition(节省空间!

GIT(devise者)所采用的默认select是尽可能使用* nix风格的EOL字符(仅限LF),以便在相同的文本内容中获得相同的SHA1。 (可能是一个重要的考虑;-)

由于内容/ blob不再记住用户的原始EOLselect(记住它可能现在在一些遥远的存储库中),Git必须做出一些猜测(基于选项)如何重新创build原始用户的文件(是CRLF还是仅仅是简单的LF)以您(和您的工具)可以使用的方式进行操作。

正常的build议是,每个用户(a)在本地转换为* nix LF结尾时提交到一个blob(所有将看到共同的SHA1 blob名称)(a / k / a正确的事情),和(b)本地设置重新创build选项到其本地系统设置,例如* nix(LF)或Windows(CRLF)等

为你的用户设置一些本地标准,并有一个大的“EOL / LF / CRLF和空白纠正提交”,你会没事的(加上新用户的培训再培训)

你也可以确保你(每个用户)使用一个普通的空格调整设置,以便制表符v空格,并且尾随空格不会造成更多不同的不便!