node_modules 不断被 git 推送,尽管它被忽略和删除了

问题描述 投票:0回答:3

我正在尝试将本地 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
3个回答
2
投票

根据Tirth的回答下的讨论:

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

假设

  • 你在树枝上
    master
  • 添加node_modules的提交具有哈希值
    a1a1a1a1
  • 你的工作树是干净的,即一切都在本地提交

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

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

git cherry-pick a1a1a1a1..master

一旦确定一切都已就绪,您可以删除 master,将

fixed
重命名为
master
,然后(强制)推送 new master 分支。


1
投票

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

git reset HEAD~N

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


0
投票

我将 .gitignore 文件中的

/node_modules
替换为
node_modules/
并且成功了。

© www.soinside.com 2019 - 2024. All rights reserved.