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

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

所有包含node_modules文件夹。我想要git忽略文件夹,无论它是从根文件夹开始的位置。在.gitignore中添加如下内容:

*node_modules/*

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


在项目目录的终端中使用通用的一行程序:

触摸。gitignore && echo "node_modules/" >> .gitignore && git rm -r——缓存的node_modules;git状态

不管你是否创建了.gitignore,不管你是否将node_modules添加到git跟踪中,它都能工作。

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

解释

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

Echo和>>将在.gitignore的末尾追加node_modules/,导致node_modules文件夹及其所有子文件夹被忽略。

Git rm -r——cached从Git控件中删除node_modules文件夹(如果之前添加过)。否则,这将显示一个警告pathspec 'node_modules'不匹配任何文件,这没有副作用,你可以安全地忽略。标志使删除是递归的,并包括缓存。

Git状态显示了新的更改。将出现.gitignore的更改,而node_modules将不会出现,因为git不再跟踪它。


首先也是最重要的事情是在我的应用程序中添加。gitignore文件。如下图所示。

然后把这个添加到你的。gitignore文件中

/node_modules

Note

你也可以添加其他文件,忽略他们被推到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*

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

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

node_modules

解决了忽略子目录中所有node_modules的问题,注意前面和后面没有斜杠,这意味着递归。

参考

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

**/node_modules

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

Two consecutive asterisks ** in patterns matched against full pathname may have special meaning: A leading ** followed by a slash means match in all directories. For example, **/foo matches file or directory foo anywhere, the same as pattern foo. **/foo/bar matches file or directory bar anywhere that is directly under directory foo. A trailing /** matches everything inside. For example, abc/** matches all files inside directory abc, relative to the location of the .gitignore file, with infinite depth. A slash followed by two consecutive asterisks then a slash matches zero or more directories. For example, a/\**/b matches a/b, a/x/b, a/x/y/b and so on. Other consecutive asterisks are considered invalid.

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

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

参考


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

Mac和Linux 触摸.gitignore 对于Windows 回声> .gitignore 打开。gitignore,声明文件夹或文件名称,如/foldername


添加以下行到你的。gitignore

*/node_modules/*

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


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

node_modules


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

只需右击node_modules ->乌龟git ->添加到忽略列表。

这将为你生成. gitignore,你不会再在staging中找到node_modules文件夹。


**node_modules

这对我很有用

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


只需在小项目1和小项目2中添加不同的.gitignore文件。每个.gitignore文件都应该/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文件,然后就可以上传了


如果你的子项目/客户端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 ------

敌人谁是尝试上述答案,仍然面临的问题

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


遵循以下步骤-

在项目所在的文件夹上打开git bash,或者打开vs code终端 按

CTRL + `

在终端中写入[echo > .gitignore]或创建文件[。Gitignore]直接进入文件夹 然后将其写入忽略整个存储库中的节点模块

node_modules

或者,尝试忽略来自多个子文件夹的所有node_modules

**node_modules

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


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


在Mac,

打开sourcetree 点击特定项目 点击设置 单击高级 点击编辑gitignore 写“node_modules” 并保存。


添加以下行到你的。gitignore

/ node_modules /

在我的例子中,在没有使用前睫毛的情况下写入/node_modules是无效的


如果你想通过命令行来做,输入echo node_modules/ > .gitignore。你可以通过输入git status来检查git是否在跟踪这个文件夹。如果被跟踪,在git中输入rm -r——cached node_modules。