2020 年如何在 Windows 版 Git 中永久使用“LF”行结尾?

2024-03-20

我们的存储库使用LF,我的 Git for Windows 安装使用按原样签出,提交 Unix 风格的行结尾,

但我在 IDE 中签出的每个文件中仍然出现错误,因为它仍然收到CRLF一直以来,即使它确实支持LF并配置为使用LF通过签到.editorconfig文件(或在其自己的设置中):

.editorconfig
root = true

[*]
end_of_line = lf

已经是 2020 年了,IDE 和工具已经支持LF在 Windows 上,那么我怎样才能拥有这些好东西呢?


有两个 git config 属性会影响行结尾:core.autocrlf and core.eol.
以前,您被告知要使用core.autocrlf = true能够处理跨平台项目,但事实并非如此true不再有。

如果您的系统/IDE/工具支持LF你呢do want to use LF和团队中的其他人一样,没有任何沉默lf->crlf->lf标准化,你必须关闭autocrlf并配置eol不去推断native行结尾,但强制它使用lf.

现在有两种方法可以实现LF在你所有的文件a/o repos中:

  1. 全局适用于本地计算机上的所有存储库。
  2. 通过签入每个存储库.gitattributes file.
    该文件会覆盖克隆存储库的每个人的任何本地配置。

我个人建议对所有本地存储库都使用两者,并确保跨平台、跨开发的一致性。


1) 全局适用于本地计算机上的所有存储库

在您的工作目录(您的本地存储库)中:

  1. 首先提交一切

  2. 让我们偏执一点,在全局和仓库中都设置它。万一。

    git config --global core.eol lf
    git config --global core.autocrlf false
    
    git config core.eol lf
    git config core.autocrlf false
    
  3. 删除所有“代码”,除了.git.
    您还可以省略依赖项、已安装的文件(例如node_modules)、构建文件和任何git 忽略文件也是如此。

  4. 最后运行

    git reset --hard HEAD
    

现在应该可以正常工作了。新检查的文件应遵循新配置并保留从远程存储库克隆的所有行结尾。

请注意,如果您的远程存储库混合使用crlf lf结局,你还必须奔跑和推动

git add --renormalize .

2) 通过签入每个存储库.gitattributes file

在您的工作目录(您的本地存储库)中:

  1. Create .gitattributes根目录中的文件包含以下内容:

    * text=auto eol=lf
    
  2. 提交文件(以及其他所有内容)

  3. 与上面相同

  4. 与上面相同

重要的提示:将文件引入存储库后,仍然拥有旧 CRLF 文件的每个人都必须执行步骤 3 和 4 来更新其工作目录,因为仅检查提交不会影响已存在的文件。


Notes

setting core.autocrlf to true or input覆盖core.eol

https://www.git-scm.com/docs/git-config#Documentation/git-config.txt-core autocrlf https://www.git-scm.com/docs/git-config#Documentation/git-config.txt-coreautocrlf

core.autocrlf = input是 UNIX 系统上的首选值。https://stackoverflow.com/a/41282375/985454 https://stackoverflow.com/a/41282375/985454
https://stackoverflow.com/a/4425433/985454 https://stackoverflow.com/a/4425433/985454

故障排除

使用第三个选项安装适用于 Windows 的 git(如 Q 中的屏幕截图所示)

按原样结帐 - 按原样提交(core.autocrlf = false)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2020 年如何在 Windows 版 Git 中永久使用“LF”行结尾? 的相关文章

  • SSH 到 Openshift 服务器失败

    我正在 openshift 服务器上使用 jboss catridge 我希望与其他人共享此实例并添加其他用户的公钥 id rsa pub 当其他人尝试访问该实例时 他会收到以下错误 我在他的实例中尝试了同样的方法 但看到了同样的错误 与
  • IntelliJ:查看本地和 git 提交/分支之间所有已更改文件的差异

    使用 IntelliJ 的 diff 查看器是检查代码的一种非常好的方法 因为您可以使用 IntelliJ 代码编辑器的所有功能 重构 完成等 在本地版本中进行更改 不幸的是 我还没有弄清楚当你在 IntelliJ 中进行代码审查时如何做最
  • 如何解决 VSTS 中拉取请求中的合并冲突?

    我已经创建了拉取请求 我进入了这个 批准 按钮不执行任何操作 并且 完成 被禁用 如何解决拉取请求中的冲突 Update 微软刚刚添加了基于浏览器的合并 这可能会让你摆脱小冲突的困境 并提供自 Sprint 150 起改进了不同场景的可视化
  • 代表 Git 存储库的数学结构是什么

    我正在学习 Git 如果我能描述一下代表 Git 存储库的数学结构 那就太好了 例如 它是一个有向无环图 它的节点代表提交 它的节点有代表分支等的标签 每个节点最多一个标签 没有标签使用两次 我知道这个描述不正确 我只是想解释我正在寻找的内
  • git pull,忽略深度,如何不拉取整个历史记录?

    我们有一个巨大的多 GB git 存储库 主要是二进制对象 克隆需要几天时间 实际的主分支 没有历史记录 只有大约 20MB 所以我想 深度为 1 的 git 克隆就是解决办法 然而 现在我需要将某人的更新拉到主服务器 我们没有分支 当我拉
  • 如何将更改移出主分支

    基本问题 但这一直发生在我身上 进行更改working branch 切换到master git merge working branch git push cap deploy 到舞台 泡一杯新茶 然后我回来思考其他事情并开始做出一些改变
  • 有没有办法让 git flow 显示它在幕后执行的命令?

    有什么方法可以让 git flow 提前告诉我当我执行 flow 命令时它将执行的确切 git 命令吗 或者告诉我它是东吗 我只能看到输出和摘要吗 你可以使用Git的GIT TRACE 环境变量 http git scm com docs
  • 如何合并两个连续的 git 存储库

    我有一个相当独特的情况 我有一个名为 Project1 的存储库 我在其中工作了一些时间 几个月 一年后 我创建了存储库 Project1 Again 从 Project1 停止的地方开始 现在 我希望修订历史记录是连续的 因此我希望它们合
  • Git - 创建拉取请求而不分叉

    使用 git 已经有一段时间了 关于 git pull request 有很多教程和解释 其动机是什么等等 我遇到两种情况 1 分叉 git 仓库 我查看了一些公共 git 存储库并决定我想要做出贡献 所以我 通过以下方式创建重复的存储库F
  • 使用终端时 Git 推送在总计后卡住了?

    我尝试将一些文件推送到Github 总大小只有22 2M 我不知道为什么它在总行之后卡住了 我读过推送到 Github 时 Git 推送挂起 https stackoverflow com questions 16906161 git pu
  • GIT:以下未跟踪的工作树文件将被签出覆盖

    我有两个分支 一个称为 master 另一个称为 dev 我目前位于 master 分支 我想转到 dev 分支将文件移动到开发服务器 但是当我执行 git checkout dev 我收到消息 以下未跟踪的工作树文件将被覆盖 查看 pag
  • 创建一个空分支?

    我有一个包含项目的 git 存储库 我现在要对这个项目进行大规模的修改 如何为这次大修创建一个空白的新分支 然后当完成时 如何将这个分支切换到master 使用 checkout orphan 命令 git checkout orphan
  • 带有 git Remote 的 Gem 文件在 Heroku 推送上失败

    我的 gemfile 中有以下行 gem client side validations git gt email protected cdn cgi l email protection Dakuan client side valida
  • Android 存储库初始化失败

    我想我非常仔细地遵循该网站的说明 http source android com source downloading html http source android com source downloading html 但是当我尝试这
  • Git - 如何将整个目录恢复到特定提交(删除任何添加的文件)

    我想恢复 git 中的目录 恢复其中的所有文件 并删除自该提交以来添加的所有文件 进行结账似乎只能满足我的第一个要求 但不会删除任何文件 我想出了最简单的解决方案 git rm path to dir git checkout
  • `git push` -- 没有输出,什么也没有发生

    touch test git add test git commit m test git push u origin master 这奏效了 该文件已上传到存储库 rm test cp R website website git rm t
  • 显示 master 之前/之后有多少提交分支的别名

    新的 Bitbucket Branches 页面非常棒 它显示每个分支领先 落后于 master 的提交数量 是否有显示相同信息的 Git 别名 信息应显示 分店名称 上次更新是什么时候 其背后有多少提交 有多少提交领先于 master 看
  • git 2.32 git push -u origin master 没有任何反应

    I ve starting to use git github and I m stucked on how to push my codes to github I m following some tutorials and when
  • 部分共享git仓库

    我是 git 新手 我想知道是否支持以下场景 如果支持的话如何支持 即用于设置和更新的 git 命令 可以从三个不同的地方获取存储库 本地 镜像 和 github mirror 完全镜像 local github 镜像 local 但 受版
  • VSTS:在构建过期的情况下自动变基/合并和重新排队构建验证门

    我们最近对 PR 上的构建验证门进行了更改 这样 如果另一个提交在当前 PR 完成之前进入主分支 则构建会 立即 过期 看here https stackoverflow com questions 49418800 vsts invali

随机推荐