【问题标题】:node_modules keep being pushed with git despite it being ignored and removednode_modules 继续被 git 推送,尽管它被忽略和删除
【发布时间】:2022-11-03 22:10:34
【问题描述】:

我正在尝试将我的本地 git 项目推送到 github 远程仓库中。我将 node_modules 添加到我所做的一次提交中,但是当我尝试时这超过了 GitHub 的文件大小限制 100.00 MB

git push -u origin main

然后

remote: error: Trace: d8e81b49d1b7e109e7b4585cf6b84d574b3888e15cb1b4f858c87c5a0147bc57
remote: error: File node_modules/node-sass/build/Release/libsass.lib is 160.60 MB; this exceeds GitHub's file size limit of 100.00 MB

然后我添加了 .gitignore 但这不起作用,因为提交已经完成

我试图从被跟踪和提交中删除 node_modules

git rm -r cached node_modules

但是当我做 git push 时它一直在尝试推动它。

我不知道如何从推送中删除 node_modules

【问题讨论】:

    标签: git


    【解决方案1】:

    如果你刚刚提交了你的节点模块,你可以这样做

    git reset HEAD~N
    

    其中 N 是您想要落后的提交次数。在这种情况下,我假设您想落后一次。这样做将取消提交您的节点模块和您提交的其他内容并将它们放入您的工作树中。在此之后,只需从工作树中删除节点 un-stage 节点模块。现在您可以再次提交您想要的更改。

    【讨论】:

    • 这是第一次提交所有内容,我甚至可以在进行任何提交之前使用该代码返回?
    【解决方案2】:

    根据Tirth 的回答下的讨论:

    您可以创建一个新分支并手动添加不添加 node_modules 的提交。

    假设

    • 你在分支master
    • 添加 node_modules 的提交具有哈希 a1a1a1a1
    • 您的工作树是干净的,即所有内容都在本地提交

    1. 在错误之前检查提交并创建新分支(称为fixed)。
      如果a1a1a1a1master 上的第一个提交,则您必须按照this post 创建一个孤立分支。
      git checkout a1a1a1a1^
      git switch -c fixed
      
      1. 如果提交包含节点模块以外的其他内容,请重新创建不带 node_modules 部分的提交。

      2. a1a1a1a1 之后的所有提交添加到新分支

      git cherry-pick a1a1a1a1..master
      

    【讨论】:

      猜你喜欢
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      • 1970-01-01
      • 2018-12-29
      • 2017-05-26
      • 2012-07-12
      相关资源
      最近更新 更多