2016-06-13 159 views
0

我有一个问题来配置Notepad ++:我在Windows中使用Notepad ++来编辑我的代码。当我在Linux中执行git diff时,tous les行显示为已修改。事实上,我确定我打开了这个文件,但是我没有在记事本中修改它!我认为这是一个记事本的配置问题,当我在记事本中打开一个文件时,所有的换行符都被改变了。所以git diff会告诉我,我修改了所有行。你能告诉我如何解决它吗?如何配置我的记事本以使用git diff

+1

所以你说的是行终止? – Droppy

+0

通常,如果所有行都发生改变,它必须与行终止相关:Windows''\ r \ n'与* nix的'\ n'。 Git有一些设置可以修改签入和签出之间的行尾。 Notepad ++也可以将所有行结尾类型替换为所有其他行结尾类型。 – MicroVirus

+0

您是否在Windows和Linux之间使用Git共享您的文件?或者他们都访问相同的文件系统?你的'git config core.autocrlf'配置是什么? – Melebius

回答

0

看起来你正在编辑的代码已经被提交给Unix系统结尾(LF)的Git。 Notepad ++将行结尾转换为CRLF,通常在Windows上使用。

您可以通过以下两种方式之一解决此问题。

如果您只打算在Windows上使用Notepad ++编辑代码,则可以使用Edit > EOL conversion > UNIX/OSX Format将编辑文件中的所有行结尾转换为Unix格式。

否则,您可以将Git配置为将Unix行结尾检出为CRLF,并通过core.autocrlf配置选项将它们提交为LF。见从下面的documentation摘录:

如果你正在编写在Windows和与人谁不(或反之亦然)的工作,你可能会在某个 点运行到行结束的问题。这是因为Windows在文件中同时使用回车符 和换行字符作为换行符,而Mac和 Linux系统仅使用换行符。这是一个微妙的但跨平台工作令人难以置信的烦人的事实;许多编辑在 窗口默默地用CRLF替换现有的LF风格的行结尾,或 当用户点击回车键时插入两个行尾字符。

Git可以通过自动将CRLF行结束符转换为LF来处理这个问题, 您向索引中添加文件,反之亦然,当它将代码 签出到您的文件系统上时。您可以使用 core.autocrlf设置打开此功能。如果你是一个Windows机器上,它设置为true - 这LF结局转换成CRLF,当你看看代码:

$ git config --global core.autocrlf true