env:
视窗 7 麦克西吉特
当我提交时,它说:
warning: LF will be replaced by CRLF.
这个警告尾巴是向后的吗? 我在Windows中编辑文件,行尾是CRLF,就像这张图片: git将其更改为LF,用于提交回购。 所以我认为正确的警告是:
warning: CRLF will be replaced by LF.
env:
视窗 7 麦克西吉特
当我提交时,它说:
warning: LF will be replaced by CRLF.
这个警告尾巴是向后的吗? 我在Windows中编辑文件,行尾是CRLF,就像这张图片: git将其更改为LF,用于提交回购。 所以我认为正确的警告是:
warning: CRLF will be replaced by LF.
当前回答
Git配置——全局核心。selff false适用于全局设置。
但是如果你正在使用Visual Studio,可能还需要为某些类型的项目(例如c#类库应用程序)修改.gitattributes:
删除line * text=auto
其他回答
警告:LF将被CRLF取代。
根据您使用的编辑器的不同,带有LF的文本文件不一定要用CRLF保存:最近的编辑器可以保留eol样式。但是git的配置设置坚持要更改这些…
只要确保(正如我在这里建议的):
git config --global core.autocrlf false
这样,您就避免了任何自动转换,并且仍然可以通过.gitattributes文件和核心指定它们。eol指令。
windows git“LF将被CRLF取代”
注意:警告信息已在Git 2.37 (Q3 2022)中更改
这个警告尾巴是向后的吗?
不:你在Windows上,git配置帮助页面确实提到了
如果您希望在工作目录中有CRLF行结束符,即使存储库没有规范化的行结束符,也可以使用此设置。
正如“git用CRLF替换LF”中所描述的,它应该只发生在签出(而不是提交)时,core. selflf =true。
repo
/ \
crlf->lf lf->crlf
/ \
正如小鹏的回答中提到的,这个警告是:
警告:(如果你检出/或克隆到另一个文件夹与你当前的核心。自自配置,)LF将被CRLF取代 该文件将在您的(当前)工作目录中有其原始的行结束符。
如git-for-windows/git issue 1242中所述:
我仍然觉得这条消息令人困惑,这条消息可以扩展到包括一个更好的解释,例如:“LF将被文件中的CRLF取代。Json后删除文件并再次签出”。
注意:Git 2.19(2018年9月),当使用核心。专制者,虚假的“LF” “CRLF”的警告现在被压制。
正如quaylar正确地评论的那样,如果在commit上有一个转换,它只是到LF。
特定的警告“LF将被CRLF取代”来自convert.c#check_safe_crlf():
if (checksafe == SAFE_CRLF_WARN)
warning("LF will be replaced by CRLF in %s.
The file will have its original line endings
in your working directory.", path);
else /* i.e. SAFE_CRLF_FAIL */
die("LF would be replaced by CRLF in %s", path);
它由convert.c#crlf_to_git()调用,本身由convert.c#convert_to_git()调用,本身由convert.c#renormalize_buffer()调用。
最后一个renormalize_buffer()只能由merge-recursive.c#blob_unchanged()调用。
所以我怀疑只有当提交是merge过程的一部分时,这种转换才会发生在git提交上。
注意:在Git 2.17(2018年第二季度)中,代码清理增加了一些解释。
参见Torsten提交8462ff4(2018年1月13日)Bögershausen (tboegi)。 (由Junio C Hamano—gitster—在commit 9bc89b1中合并,2018年2月13日)
Convert_to_git (): safe_crlf/checksafe变成int conv_flags
在调用convert_to_git()时,checksafe参数定义了what 如果EOL转换(CRLF—> LF—> CRLF)没有发生,应该发生什么 往返干净。 此外,它还定义了行结束符是否应该重新正规化(CRLF—> LF)或保持原样。
Checksafe是一个safe_crlf枚举,包含以下值:
SAFE_CRLF_FALSE: do nothing in case of EOL roundtrip errors
SAFE_CRLF_FAIL: die in case of EOL roundtrip errors
SAFE_CRLF_WARN: print a warning in case of EOL roundtrip errors
SAFE_CRLF_RENORMALIZE: change CRLF to LF
SAFE_CRLF_KEEP_CRLF: keep all line endings as they are
注意在8462ff4中引入的回归("convert_to_git(): “safe_crlf/checksafe变成int conv_flags”,2018-01-13,Git 2.17.0)返回到Git 2.17周期导致selflf重写产生警告消息 尽管设置了safecrlf=false。
参见Anthony Sottile (asottile)提交的commit 6cb0912(2018年6月04日)。 (由Junio C Hamano—gitster—在commit 8063ff9中合并,2018年6月28日)
这是因为Windows上的GitHub Desktop的配置假设CRLF,但文本编辑器可能使用LF。您可以将本地存储库设置改为使用lf。
导航到git repo的根目录,并以完全相同的顺序执行
git config core.eol lf
git config core.autocrlf input
来源:GitHub问题
我遇到过类似的问题,在windows上使用vscode(v1.57)尝试了其他答案中定义的解决方案,但没有工作。
所以对我来说,以下步骤是有效的:
在根文件夹中有一个名为.editorconfig的文件 打开该文件,将end_of_line = lf修改为end_of_line = CRLF 运行git rm——缓存,警告消失!!
确保在.gitignore文件中添加了不必要的文件或文件夹。
如。 node_modules
如果仍然面对,则运行此命令
git配置——全局核心。autocrlf假的' '
关闭Visual Studio
如果你得到这个错误,一个简单的解决方法是关闭Visual Studio,然后你可以提交到main,就是这么简单。 我也遇到过同样的问题,我就是这样解决的。这是因为您要打开的文件在另一个程序中打开了。