在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框中,然后从那里提交/推送我的更改,这确实很烦人。
我该如何解决?
答案 0 :(得分:0)
最简单的方法是使用gitattributes文件并指定* text=auto
。然后,Git将查看文件,猜测它们是文本文件还是二进制文件,并为您执行自动行尾转换(前提是该文件最初是使用LF结尾提交的)。您可以通过使用存储库中的内容创建一个.gitattributes
文件或在.git/info/attributes
中编写一个自定义文件来完成此操作。有关更多详细信息,请参见gitattributes documentation。
完成此操作后,即可在配置中设置core.eol
(但不能设置core.autocrlf
)为您要使用的任何内容。如果将其设置为crlf
或native
(默认设置),则Git将以CRLF格式检出文件,并且由于它们是文本形式,它将与LF一起写入到存储库中。如果指定lf
,则即使在工作树中,也始终会得到LF。
另一种选择是将core.autocrlf
(而不是core.eol
)指定为true,这等效于将gitattributes设置为将* text=auto
和core.eol
包含为{{1} }。
答案 1 :(得分:0)
....或者您可以要求git完全不干扰eol并让您处理它。在.gitattributes
中:
* -text
那样就可以。