[英]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
),以任何你想要使用。 如果你把它设置为crlf
或native
(默认),Git会在CRLF中检查文件,因为它们是文本,它会用LF将它们写入存储库。 如果你指定lf
,那么即使在工作树中你也会得到LF。
另一种方法是指定core.autocrlf
(而不是core.eol
)为真,这相当于设置你的gitattributes包含* text=auto
和core.eol
到crlf
。
....或者你可以要求git根本不弄乱eol让你处理它。 在.gitattributes
:
* -text
那样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.