git希望在Windows上将LF更改为CRLF-如何解决此问题?

时间:2019-04-05 20:24:20

标签: git core.autocrlf

this answer中,我找到了以下图表:

  

autocrlf的工作方式

core.autocrlf=true:      core.autocrlf=input:     core.autocrlf=false:

        repo                     repo                     repo
      ^      V                 ^      V                 ^      V
     /        \               /        \               /        \
crlf->lf    lf->crl      crlf->lf       \             /          \      
   /            \           /            \           /            \

我大部分的开发和单元测试都在Windows盒上本地进行,但是主要的git存储库在unix机器上,并且代码在多台unix机器上使用。

我不太在乎窗口的行尾如何显示,但是我非常希望在存储库中有任何CRLF。

我正在使用PyCharm,如果有什么不同的话。

这是我的git设置:

# ~/.gitconfig :
[user]
    name = ***
    email = ***
[core]
    autocrlf = true
    eol = lf

# <path-to-my-project>/.git/config :
[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    autocrlf = true
[remote "origin"]
    url = git+ssh://***
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

我认为我的设置正确,但是我得到了warning: LF will be replaced by CRLF in

我当前的解决方法是将文件sftp放到unix框中,然后从那里提交/推送我的更改,这确实很烦人。

我该如何解决?

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用gitattributes文件并指定* text=auto。然后,Git将查看文件,猜测它们是文本文件还是二进制文件,并为您执行自动行尾转换(前提是该文件最初是使用LF结尾提交的)。您可以通过使用存储库中的内容创建一个.gitattributes文件或在.git/info/attributes中编写一个自定义文件来完成此操作。有关更多详细信息,请参见gitattributes documentation

完成此操作后,即可在配置中设置core.eol(但不能设置core.autocrlf)为您要使用的任何内容。如果将其设置为crlfnative(默认设置),则Git将以CRLF格式检出文件,并且由于它们是文本形式,它将与LF一起写入到存储库中。如果指定lf,则即使在工作树中,也始终会得到LF。

另一种选择是将core.autocrlf(而不是core.eol)指定为true,这等效于将gitattributes设置为将* text=autocore.eol包含为{{1} }。

答案 1 :(得分:0)

....或者您可以要求git完全不干扰eol并让您处理它。在.gitattributes中:

*    -text

那样就可以。