我尝试使用CRLF结束行提交文件,但失败了.
我花了整整一天的时间在我的Windows计算机上尝试不同的策略,几乎被迫停止尝试使用Git而是尝试使用Mercurial.
每个答案只能分享一个最佳实践.
是否有文件或菜单可以让我更改如何处理行结尾的设置?
有3种选择:
结帐Windows风格,提交Unix风格
签出文本文件时,Git会将LF转换为CRLF.提交文本文件时,CRLF将转换为LF.对于跨平台项目,这是Windows上的推荐设置("core.autocrlf"设置为"true")
Checkout as-is,提交Unix风格
签出文本文件时,Git不会执行任何转换.提交文本文件时,CRLF将转换为LF.对于跨平台项目,这是Unix上的推荐设置("core.autocrlf"设置为"input").
按原样结帐,按原样提交
签出或提交文本文件时,Git不会执行任何转换.不建议跨平台项目选择此选项("core.autocrlf"设置为"false")
大部分.gitattributes文件都有* text=auto.text=auto该文件的目的是什么?
我的许多应用程序用户配置文件都保存在git存储库中,以便在多台计算机和多个平台之间轻松共享.这些配置文件.gitconfig中包含以下用于处理回车换行符的设置
[core]
autocrlf = true
safecrlf = false
Run Code Online (Sandbox Code Playgroud)
这些设置也应用于GNU/Linux平台,这会导致模糊的错误.
在配置文件中处理这些特定于平台的差异有哪些最佳实践?
我意识到这个问题可以通过为每个平台建立一个分支并将主要内容保持在主服务器并在主服务器向前移动时与平台分支合并来解决.我想知道这个问题是否有更简单的解决方案?
在尝试为开发人员标准化平台时,我的一个需求是提交,.git/config以便每个人都有相同的CRLF配置,而不会忘记手动设置它.
我该如何设置?
我对所有这些消极情绪感到担忧autocrlf.如果不起作用,为什么不删除此功能?要么这个功能的制作者被误解,要么他们用它做了一个失败的实验,它应该被删除,以阻止更多的人浪费他们的时间(阅读模糊的手册页,提问,回答这些问题的人等).
众所周知,Windows中使用的换行符(新行)通常是回车符(CR)后跟换行符(LF)即(CRLF),而Linux和Unix使用简单的换行符(LF)
现在,在我的情况下,我的构建服务器使用支持Linux和Unix格式,所以,下面的规则在构建服务器上完美地工作:
linebreak-style: ["error", "unix"]
Run Code Online (Sandbox Code Playgroud)
但我正在Windows上进行开发,我需要更新每个git pull/git push的规则,如下所示,
linebreak-style: ["error", "windows"]
Run Code Online (Sandbox Code Playgroud)
那么,有没有办法编写通用的换行符式规则来支持这两种环境,Linux/Unix和Windows?
注意:我正在使用ECMAScript6 [js],WebStorm [ide]进行开发
任何解决方案/建议将受到高度赞赏.谢谢!
我们在.gitattributes文件中有这个:
* text=auto eol=lf
Run Code Online (Sandbox Code Playgroud)
我想准确理解这是做什么的.
第一部分是text=auto.从文档:
这确保了Git认为是文本的所有文件都将在存储库中具有规范化(LF)行结尾.
重要的是,Git仅针对它检测为文本文件的文件进行规范化.
但是,我不确定这个eol=lf部分.我认为它也将仅对文本文件进行规范化,但我在文档中找不到对它的支持,并且当我们的PNG文件也被标准化时我们有一个实例,使它们无效.
是否有像上面这样的设置基本上会说"在文本文件的两个方向上进行规范化,并单独保留二进制文件"?
我有一个现有的存储库,其中行结尾都搞砸了.我想重写整个存储库并一劳永逸地修复行结尾.有文本文件和二进制文件,我们假设git检测二进制文件的启发式方法可以正常工作.
使用带有规范化行结尾的文件重新填充整个存储库的最简单方法是什么?
我已将默认eol从CRLF更改为LF,但这仅适用于新文件。我想知道如何一次更改所有文件的eol,因为我有数百个文件,并且很难手动进行。谢谢
我在配置的窗口上有git,git config --global core.autocrlf false这样git就不会自动将结账时的文件从LF行结尾转换为CRLF.
当我在Windows上创建一个新文件并添加它时,我得到以下输出.
git add windows-file.txt
warning: CRLF will be replaced by LF in windows-file.txt.
The file will have its original line endings in your working directory.
Run Code Online (Sandbox Code Playgroud)
因此当将windows-file.txt添加到我想要的git索引时,git正在将我的行结束从windows更改为unix.
我遇到的问题是工作目录版本没有改变,如何配置git以便它改变工作目录和git索引的行结尾?
UPDATE
在add和commit git status之后没有显示任何差异,即使本地工作目录版本具有Windows行结尾并且repo版本具有unix行结尾.
更新 repo根目录下的.gitattributes的内容
# Set default behaviour, in case users don't have core.autocrlf set.
text eol=lf
# These files are text and should be normalized (convert crlf => lf)
*.java text
*.xml text
*.cmd text
*.sh text
*.txt text
*.md text
*.js text …Run Code Online (Sandbox Code Playgroud) git ×8
eol ×2
newline ×2
eslint ×1
git-config ×1
javascript ×1
line-endings ×1
msysgit ×1
unix ×1
windows ×1