为什么 git 默认忽略 node_modules 文件夹?

Why does git ignore node_modules folder by default?

我创建了一个 angular 项目并将其推送到我的 github 存储库中。

当我查看推送的文件时,node_modules 文件夹丢失了,我没有在任何地方声明忽略此文件夹,这是默认行为吗?如果是那么为什么?

此外,当我决定删除 github 上的所有存储库并只创建一个存储库时,我将在其中签入所有项目,一旦初始化 git init 并推送更改,git 开始为所有项目推送 node_modules 文件夹,这花了很多时间。

是什么让 git 忽略或不忽略 node_modules 文件夹本身?我没有自己在任何地方设置这个配置。

谢谢。

git默认不忽略node_modules。默认情况下它什么都不忽略。 angular cli 将 node_modules 添加到 .gitignore,导致 git 忽略它。参见 for more info, and see angular cli's github repo for the specific .gitignore file added。您会看到 /node_modules 列在那里。

您不应该进行版本控制 node_modules,因为这些是您可以使用 npm installyarn install 轻松获得的工件。

在 angular 项目之外(例如,在新目录中)创建 git 存储库不会添加 .gitignore 文件,因此不会忽略 node_modules .

Angular CLI 在项目的根目录中生成一个文件,您在其中打开名为 的 angular 项目。gitignore.

这是默认工作区配置文件之一,当您使用 ng new[=27= 创建项目时,angular cli 会自动生成 ] cli 命令。此文件的目的是 存储有意未跟踪的文件,GIT 应该忽略

您可以将您想要在git中忽略的所有此类文件夹/文件的路径放在该文件中。它的内容默认是这样的..

projectname/dist/
projectname/node_modules/

distnode_modules文件夹默认放在里面。您可以在此文件中添加任何要放入忽略列表的文件夹/文件名。

谢谢。

您是否使用 angular-cli 生成了 angular 项目?

如果是,那么在生成项目时它会自动生成一个 .gitignore 文件以忽略 node_modules.

git只会忽略一个文件夹,或者只有在.gitignore文件中设置的文件。 在您的情况下,它已经在为您生成的 .gitigore 文件 angular-cli 中自动完成。