繁体   English   中英

Git - 忽略 node_modules 文件夹无处不在

[英]Git - Ignore node_modules folder everywhere

我有一个包含多个其他项目的项目:

  • 主要项目
    • 小项目1
    • 小项目2

所有包含node_modules文件夹。 我希望 git 忽略该文件夹,无论它从根文件夹开始的位置。 像这样添加 in.gitignore 的东西:

*node_modules/*

node_modules/node_modules添加到.gitignore文件中,以忽略当前文件夹和任何子文件夹中名为node_modules的所有目录,如下图所示。

例子

在项目目录的终端中使用通用单行

touch .gitignore && echo "node_modules/" >> .gitignore && git rm -r --cached node_modules ; 状态

无论您是否创建了.gitignore ,无论您是否已将node_modules添加到 git 跟踪,它都有效。

然后提交并推送.gitignore更改。

解释

如果.gitignore文件尚不存在, touch将生成它。

echo>>将在.gitignore末尾附加node_modules/ ,导致node_modules文件夹和所有子文件夹被忽略。

git rm -r --cached如果之前添加了node_modules文件夹,则从 git 控件中删除它。 否则,这将显示警告pathspec 'node_modules' did not match any files ,它没有副作用,您可以放心地忽略。 这些标志导致删除是递归的并包括缓存。

git status显示新的更改。 将出现对.gitignore的更改,而node_modules将不会出现,因为它不再被 git 跟踪。

编辑-(2022-04-09 之前)

在一个新的 monorepo 设置中,我发现只是使用这个

node_modules

解决它忽略子目录中的所有node_modules,注意之前或之后没有斜杠,这意味着递归。

参考

老路-(2022-04-09之前)

**/node_modules

**用于整个项目中的递归调用

与完整路径名匹配的模式中的两个连续星号**可能具有特殊含义:

前导**后跟斜杠表示在所有目录中都匹配。 例如, **/foo匹配任何地方的文件或目录foo ,与模式foo相同。 **/foo/bar匹配文件或目录bar直接位于目录foo下的任何位置。

尾随/**匹配里面的所有内容。 例如, abc/**匹配目录abc中的所有文件,相对于 .gitignore 文件的位置,具有无限深度。

斜杠后跟两个连续的星号,然后斜杠匹配零个或多个目录。 例如, a/\**/b匹配a/ba/x/ba/x/y/b等。

其他连续的星号被认为是无效的。

为什么这种方法比node_modules/更好

**充当递归模式。 它在子目录中有 node_modules 的 monorepo 项目中很有用。 **将搜索目录中的所有 node_modules 并忽略它们。

参考

首先也是最重要的事情是在 my-app 中添加.gitignore文件。 如下图所示。

将 .gitignore 放在 node_modules 的父文件夹/目录中。

然后将其添加到您的.gitignore文件中

/node_modules

笔记

您也可以添加其他文件以忽略它们以推送到 github。 这里还有一些保存在 .gitignore 中的文件。 您可以根据需要添加它们。 #只是在 .gitignore 文件中注释的一种方式。

# See https://help.github.com/ignore-files/ for more about ignoring files.

# dependencies
/node_modules

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

在 .gitignore 中添加以下行将忽略整个存储库中的节点模块。

node_modules

在此处输入图像描述

通过代码编辑器或命令直接在根文件夹中创建.gitignore文件

适用于 Mac 和 Linux

touch .gitignore

对于 Windows

echo >.gitignore

像这样打开.gitignore声明文件夹或文件名/foldername

**node_modules

这对我有用

忽略子文件夹中存在的所有 node_modules 的递归方法

如果没有,它将自动创建一个.gitignore文件,然后创建一个文件名.gitignore并添加复制并粘贴以下代码

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

以下这些都是不必要的文件

有关忽略文件的更多信息,请参阅https://help.github.com/articles/ignoring-files/

并保存.gitignore文件,您可以上传

将以下行添加到您的 .gitignore

/node_modules/

就我而言,在没有前斜杠的情况下编写 /node_modules 是行不通的

你也可以用 SVN/Tortoise git 来做。

只需右键单击 node_modules -> Tortoise git -> 添加到忽略列表。

这将为您生成 .gitIgnore 并且您将不会在暂存中再次找到 node_modules 文件夹。

如果您的子项目/客户端 node_modules 被提交,

    # dependencies
    /node_modules
    /.pnp
    .pnp.js

    # testing
    /coverage

    # production
    /build

    # misc
    .DS_Store
    .env.local
    .env.development.local
    .env.test.local
    .env.production.local

    npm-debug.log*
    yarn-debug.log*
    yarn-error.log*

然后在最后一行添加“node_modules”。

    # dependencies
    /node_modules
    /.pnp
    .pnp.js

    # testing
    /coverage

    # production
    /build

    # misc
    .DS_Store
    .env.local
    .env.development.local
    .env.test.local
    .env.production.local

    npm-debug.log*
    yarn-debug.log*
    yarn-error.log*
    node_modules 
    # ------ Up Here ------

按着这些次序 -

  • 在项目所在的文件夹上打开 git bash,或者通过点击打开 vs 代码终端
CTRL + `
  • 在终端中写入 [ echo > .gitignore ],或者直接在文件夹中创建文件 [.gitignore]
  • 然后写这个来忽略整个存储库中的节点模块
node_modules
  • 或者,试试这个忽略来自多个子文件夹的所有 node_modules
**node_modules

注意:如果您在输入文件夹或文件的名称时出现拼写错误,它将无法正常工作。 所以,仔细检查拼写

将 node_modules/ 或 node_modules 添加到 .gitignore 文件以忽略当前文件夹和任何子文件夹中名为 node_modules 的所有目录。

在 Mac 中,

  1. 开源树
  2. 单击特定项目
  3. 点击设置
  4. 单击高级
  5. 单击编辑 gitignore
  6. 写“node_modules”
  7. 并保存。

如果您想通过命令行执行此操作,请输入echo node_modules/ >.gitignore 您可以通过输入git status来检查 git 是否正在跟踪文件夹。 如果它在git rm -r --cached node_modules中被跟踪类型。

将以下行添加到您的 .gitignore

*/node_modules/*

这将忽略当前目录和子目录中的所有 node_modules。

只需将不同的 .gitignore 文件添加到迷你项目 1 和迷你项目 2。每个 .gitignore 文件都应该 /node_modules 并且你很高兴。

与那些尝试上述答案但仍面临问题的人为敌

我最终尝试了几乎所有的答案,它解决了我忽略 node_modules 的问题,但只有在我提交更改之后!

在 git 存储库中不保留任何模块并不是一个好习惯。 # gitignore 文件 删除 node_modules 文件夹创建 gitignore 删除 node_modules

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM