在 vscode 中从 git 中删除 node_modules
Posted
技术标签:
【中文标题】在 vscode 中从 git 中删除 node_modules【英文标题】:Remove node_modules from git in vscode 【发布时间】:2018-11-13 12:12:16 【问题描述】:在 git、vscode 终端中删除 node_modules
时出错
git rm -r --cached node_modules
错误:
致命错误:pathspec 'node_modules' 不匹配任何文件
【问题讨论】:
我不明白。如果他们被忽略并且没有被跟踪,那么问题是什么? 在 vscode 中无法从 git 中删除 node_modules,但一切看起来都很清晰 你一直在说“从 vscode 中的 git 中删除”。但听起来文件不是“在 git 中”?如果您不希望它们在 vscode 中,为什么不直接删除该文件夹? 如果我们让您感到困惑,或许可以在问题中附上屏幕截图? 你是什么意思“git评论没有帮助”? 【参考方案1】:-
制作 .gitignore 文件。
在 gitignore 文件中添加 node_modules/ 行
运行此命令
git rm -r --cached .
git add .
git commit -m "remove gitignore files"
git push
【讨论】:
啊哈!关键是git rm -r --cached .
这就是我忘记的。
不要忘记git rm -r --cached .
中的.
,如果你不写点它是行不通的。可能很难看到。
解决我的问题。谢谢!【参考方案2】:
我遇到了同样的问题。执行以下步骤 -
制作 .gitignore 文件。在终端中运行以下命令
git rm -r --cached node_modules
git commit -am "node_modules be gone!"
git push origin master
就是这样!
你可以走了!
【讨论】:
感谢您的回答。你能帮我理解一下步骤吗?【参考方案3】:在您的项目目录中创建.gitignore
文件。
.gitignore
文件将如下所示
/Folder_name
在终端或等效命令中输入以下命令:
git rm -r --cached Folder_name (remove the directory from git but not delete it from the filesystem/locally)
git commit -m "remove unused directory"
git push origin <your-git-branch> (can be master or develop or others)
【讨论】:
【参考方案4】:创建.gitignore
文件并在其中添加node_modules
:
touch .gitignore && echo "node_modules" >> .gitignore
删除缓存数据:
git rm -r --cached .
更新你的最后一次提交:
git add .
git commit --amend --no-edit
git push --force-with-lease
【讨论】:
【参考方案5】:该错误表示node_modules
目录不受 git 版本控制。有两种可能:
它们尚未添加到Git
。尝试运行git status
命令,查看它们是否显示为untracked
文件。
它已被添加到您的gitignore
文件中。要列出所有被忽略的文件,请尝试以下命令:git ls-files --others -i --exclude-standard
【讨论】:
【参考方案6】:一旦 git 开始跟踪文件或文件夹,即使您将其添加到 .gitignore 也不会停止
您需要将其从 .git 存储库中删除。我专门使用本地的,通常位于项目源的根目录。
截至今天 20200408,似乎没有鼠标单击方法可以从 git 中删除烦人的文件/文件夹。
您必须使用终端。
按 Ctrl-J 然后选择 Terminal 选项卡
或从 VSCode 菜单中选择 Terminal / New Terminal
然后发出类似下面的命令
git rm -r --cached www/index.html
以下排除
www/
已经在我的 .gitignore 文件中了。
在您的情况下,您需要添加“癌症文件夹”:)
node_modules/
PS:简单的事情变得不必要的困难,我想知道为什么?
下面是我从不使用的无数 Git 命令的垃圾。享受吧!
【讨论】:
【参考方案7】:上面的答案很棒。它们不是你一直记得的东西。因此,每次需要执行此操作时,您都必须重新在线查看。
这是使用您已经熟悉的 git 命令删除 node_modules 的快速方法。
首先创建一个.gitignore
文件并将/node_modules
添加到其中。
然后删除node_modules
文件夹并提交您的更改。
Git 会将此解释为文件夹删除,并将从 Github 或您使用的任何源代码控制中删除 git push
上的 node_modules 文件夹。
npm i
或yarn install
重新创建node_module
package.json 会自动在您的开发环境中。
【讨论】:
【参考方案8】:请注意,当前接受的答案不会完全删除它,它将保留在历史记录中。如果您希望它从您的历史记录中完全删除,即从该目录所在的所有过去提交中,您可以使用以下任一方式:
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch node_modules" HEAD
(在此处了解更多信息:7.6 Git Tools - Rewriting History)
或者,您可以使用名为 filter repo 的第三方插件 - 这确实也是 Git 官方推荐的方法:
git filter-repo --path node_modules --invert-paths
(在此处阅读有关如何使用的更多信息:Installation 和 Cheat Sheet 和 Documentation)
然而,在这两种情况下,请注意您正在重写历史,这在团队中工作时可能是一场噩梦......。所以要么在你自己的本地分支/环境中使用它,要么确保你知道没有人有更好的选择,并让你所有的伙伴事先知道。
【讨论】:
这正是我想要的,谢谢它的帮助。【参考方案9】:您可以从 git 中删除文件夹(使用命令行或您的 IDE)。
如果你想从 git 中删除 node_modules
:
-
将
node_modules
重命名为node_modulesx
提交
将node_modulesx
重命名为node_modules
将node_modules
添加到.gitignore(如果需要,创建.gitignore 文件)
提交
现在您的 node_modules
文件夹仍然存在,但不会再提交给 git。
【讨论】:
以上是关于在 vscode 中从 git 中删除 node_modules的主要内容,如果未能解决你的问题,请参考以下文章
在 VSCode 中保存文件会删除 git repo 中的所有跟踪文件