PhpStorm + GIT行尾符从LF变为CRLF的更改

13
我已将PhpStorm中的行尾设置为LF,但当我提交到Github时,有时会发现某些文件再次出现了CRLF行尾符(我在Windows上工作)。
这种情况发生在我编辑过的同样的文件上,并且在我的提交/推送到存储库之间没有其他人编辑过它们。这非常令人烦恼,我需要经常更改相同文件的行尾。这可能是什么原因,如何解决?
我还检查了“警告即将提交CRLF行分隔符”的选项。
编辑:
我的本地git配置如下:
[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[remote "origin"]
    url = https://github.com/*
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "develop"]
    remote = origin
    merge = refs/heads/develop

我的全局配置如下:

[user]
    name = *
    email = *
[core]
    autocrlf = false

我的系统范围配置如下:

[core]
    symlinks = false
    autocrlf = false
[color]
    diff = auto
    status = auto
    branch = auto
    interactive = true
[pack]
    packSizeLimit = 2g
[help]
    format = html
[http]
    sslCAinfo = /bin/curl-ca-bundle.crt
[sendemail]
    smtpserver = /bin/msmtp.exe

[diff "astextplain"]
    textconv = astextplain
[rebase]
    autosquash = true

我的PhpStorm中的GIT设置:

我的PhpStorm中的GIT设置

3个回答

16

经过测试,显然不是 PhpStorm 的问题,而是 GIT 配置的问题。

在 Windows 上似乎需要设置:

git config --global core.autocrlf input

但同时也

git config --global core.eol lf

让它工作。


7

您可以检查这个Git设置是否有帮助:

git config --global core.autocrlf false

我通常建议core.autocrlf保持为false(只有少数情况需要将其设置为true)。
还要检查是否有任何带有core.eol指令的.gitattributes文件。

我使用了git config --global --list命令,并确实将其设置为true,因此根据您的建议,我将其更改为false。在我的.gitattributes文件中,我只有* text=auto - 没有其他内容。我会尝试检查一下,在这个更改之后问题是否仍然存在。 - Marcin Nabiałek
似乎完全没有帮助。我的文件仍然出现CRLF。我查看了版本控制台,发现有git -c core.quotepath=false config core.autocrlf和例如git -c core.quotepath=false add --ignore-errors -- tests/api/*。警告:LF将被替换为CRLF在tests/api/*中。该文件将在您的工作目录中保留其原始行结尾。 - Marcin Nabiałek
@MarcinNabiałek 目前没有额外的线索。 - VonC
我在PhpStorm的“代码风格”设置中将“新文件的行分隔符”设置为“Unix和OS X(\n)”。因此,当我看到PhpStorm在现有文件中使用crlf时,我认为,“好吧,那些文件已经使用了crlf,所以它只是继续使用它。”但现在我发现它已经将一个完全采用Linux风格的文件更改为使用crlf。我正在使用PhpStorm 2016.1,并且已经苦恼于这些行结尾不一致问题将近一年了。 - Buttle Butkus
@jurchiks 或许PHPStorm没有遵循core.autocrlf配置吗?但是关于Git,如果将core.autocrlf设置为false,则意味着:什么也不改动(当然,除非您已经放置了.gitattributes指令)。 - VonC
显示剩余8条评论

3

git config --global core.autocrlf input 将确保所有 Git 项目仅使用 LF。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接