繁体   English   中英

git想在Windows上将LF更改为CRLF - 我该如何解决这个问题?

[英]git wants to change LF to CRLF on windows - how do I fix this?

这个答案中 ,我发现了以下图表:

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框并从那里提交/推送我的更改,这真的很烦人。

我该如何解决?

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

一旦你做到了这一点,你就可以设置core.eol在你的配置(但不core.autocrlf ),以任何你想要使用。 如果你把它设置为crlfnative (默认),Git会在CRLF中检查文件,因为它们是文本,它会用LF将它们写入存储库。 如果你指定lf ,那么即使在工作树中你也会得到LF。

另一种方法是指定core.autocrlf (而不是core.eol )为真,这相当于设置你的gitattributes包含* text=autocore.eolcrlf

....或者你可以要求git根本不弄乱eol让你处理它。 .gitattributes

*    -text

那样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM