Git和IntelliJ行分隔符问题

时间:2016-02-19 10:30:21

标签: git intellij-idea

我在IntelliJ 15.0.3工作并使用Gi​​t通过Git Bash(提交和推送更改)。当我从远程git存储库中fetch文件时 它包含不同的行分隔符(混合模式或其调用方式)。我的意思是有些行以CRLF结尾,有些行以LF结尾(同一个文件)。

当我在IDEA中进行更改时 - 文件会自动保存,并且所有行分隔符都会减少(更改)为IDEA默认行分隔符(LF对我来说)。

git将这些更改视为对文件的更改,因此我提交了大量更改的文件:

- some line
+ some line

因为some line [CRLF]已更改为some line [LF]

如何配置Git忽略此问题或如何配置IntelliJ IDEA以便在此混合模式下保留文件?我不希望在存在时提交更改没有变化。

3 个答案:

答案 0 :(得分:7)

安装git时,我们可以选择设置checkout as-is and commit as-is

如果没有设置,我们可以使用git config

以下命令可帮助您完成此操作。

git config --global core.autocrlf true

根据文件:

    Git can handle this by auto-converting CRLF line endings into LF when you
 add a file to the index, and vice versa when it checks out code onto your 
filesystem. You can turn on this functionality with the core.autocrlf setting. 
If you’re on a Windows machine, set it to true – this converts LF endings into 

答案 1 :(得分:3)

IDEA将更改决议委托给git。

因此您必须force desired line breaks in IDEAto force desired line breaks in git

在我的情况下autocrlf true已经存在于我的电脑上,但工作副本最初是从同事的共享中复制的,其中已经使用其他设置进行了检查。

干净的结帐可以解决问题,但我已经更改了一些文件,并希望保留它们。 这可以通过重置whole project或只需要subdirectory的git索引来解决。

答案 2 :(得分:0)

尝试将以下配置添加到您的.gitconfig(仅适用于基于Unix的操作系统)

[core]
    autocrlf = input
    eol = lf

您还可以在终端中进行此类更改:

 git config --global core.eol lf
 git config --global core.autocrlf input