Git -忽略所有地方的node_modules文件夹

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

    <李>主要项目
    • 小项目1
    • 小项目2
    • 李< / ul > < / >

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

    *node_modules/*
    
801685 次浏览
< p >添加# EYZ0 或# EYZ0 到.gitignore文件,忽略当前文件夹中所有名为node_modules的目录和如下图所示的任何子文件夹

example

在项目目录的终端中使用环球行程序:

触摸。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' did not match any files,它没有副作用,您可以安全地忽略它。标志使删除是递归的,并包括缓存。

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

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

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

node_modules

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

Reference .

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

**/node_modules

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

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

开头的**后跟斜杠表示在所有目录中匹配。例如,**/foo匹配任何位置的文件或目录foo,与模式foo相同。**/foo/bar匹配在foo目录下的任何文件或目录bar

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

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

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

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

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

Reference .

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

Mac和Linux

 touch .gitignore 

For Windows

 echo >.gitignore 

打开.gitignore,声明文件夹或文件的名称,如/ foldername

添加以下行到你的。gitignore

*/node_modules/*

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

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

node_modules

enter image description here

你也可以用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]。Gitignore]直接进入文件夹
  • 然后将其写入忽略整个存储库中的节点模块
node_modules
  • 或者,尝试忽略来自多个子文件夹的所有node_modules
**node_modules

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

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

在Mac,

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

添加以下行到你的。gitignore

# EYZ0

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

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