3 回答
TA贡献1821条经验 获得超4个赞
在Windows中获取LF结尾的正确方法是首先设置core.autocrlf为false:
git config --global core.autocrlf false
如果使用的是msysgit,则需要执行此操作,因为它true在系统设置中将其设置为。
现在,git将不执行任何以规范化结尾的行。如果你想你的文件检查是标准化的,这样做:设置text=auto在您的.gitattributes所有文件:
* text=auto
并设置core.eol为lf:
git config --global core.eol lf
现在,您还可以通过运行将单个存储库切换到crlf(在工作目录中!)。
git config core.eol crlf
完成配置后,您可能希望git规范化repo中的所有文件。为此,请转到存储库的根目录并运行以下命令:
git rm --cached -rf .
git diff --cached --name-only -z | xargs -n 50 -0 git add -f
如果现在希望git也将工作目录中的文件标准化,请运行以下命令:
git ls-files -z | xargs -0 rm
git checkout .
TA贡献1828条经验 获得超6个赞
尽管这些都不适合我,但我经常会回到这个答案。就是说,对我来说正确的答案是其他答案的混合体。
我发现有效的方法如下:
git config --global core.eol lf
git config --global core.autocrlf input
对于在设置了这些全局设置之后签出的回购协议,所有内容都将按照回购协议中的内容进行签出–希望LF(\n)。任何CRLF都将LF在签到时转换为仅。
对于已经签出的现有仓库(仓库中有正确的行尾而不是工作副本),可以运行以下命令来修复它:
git rm -rf --cached .
git reset --hard HEAD
这将从当前目录()中rm递归(r)删除(),而不提示(-f)除已编辑(--cached)以外的所有文件.。在reset随后返回所有这些文件到他们自己的真实行结束(匹配什么在回购)的状态。
如果您需要在回购中修复文件的行尾,我建议使用一种编辑器,该编辑器可以让您像IntelliJ或Sublime Text一样批量执行此操作,但是我敢肯定,任何好的软件都可能会支持这一点。
- 3 回答
- 0 关注
- 1504 浏览
添加回答
举报