我有一个包含多个其他项目的项目:
全部包含node_modules
文件夹。我希望git忽略该文件夹,无论它从根文件夹开始在哪里。在.gitignore中添加类似这样的内容:
*node_modules/*
发布于 2015-04-23 18:34:24
将node_modules/
或node_modules
添加到.gitignore
文件以忽略当前文件夹中名为node_modules
的所有目录以及类似下图的所有子文件夹。
发布于 2017-12-15 11:02:41
在项目目录中的终端中使用通用单行程序:
touch .gitignore && echo " node_modules /“>> .gitignore && git rm -r --缓存的node_modules;git状态
无论你是否已经创建了一个.gitignore
,不管你是否已经将node_modules
添加到git跟踪中,它都可以工作。
然后提交并推送.gitignore
更改。
说明
如果.gitignore
文件不存在,touch
将生成该文件。
echo
和>>
会将node_modules/
附加到.gitignore
的末尾,导致node_modules
文件夹及其所有子文件夹被忽略。
如果node_modules
文件夹是以前添加的,git rm -r --cached
会将其从git控件中删除。否则,这将显示一个警告pathspec 'node_modules' did not match any files
,它没有副作用,您可以放心地忽略它。这些标志使得移除是递归的,并且包括高速缓存。
git status
将显示新的更改。对.gitignore
的更改将会出现,而node_modules
将不会出现,因为它不再被git跟踪。
发布于 2018-11-10 22:39:15
**/node_modules
**
用于整个项目的递归调用
在与完整路径名匹配的模式中,
两个连续的星号
**
可能具有特殊含义:
前导**
后跟斜杠表示在所有目录中都匹配。例如,**/foo
与文件或目录foo
anywhere匹配,与模式foo
相同。**/foo/bar
与直接位于foo
目录下的文件或目录bar
anywhere匹配。
尾随的/**
匹配内部的所有内容。例如,abc/**
匹配目录abc
中的所有文件,相对于.gitignore文件的位置,深度是无限的。
一个斜杠后跟两个连续的星号,然后一个斜杠匹配零个或多个目录。例如,a/\**/b
与a/b
、a/x/b
、a/x/y/b
等匹配。
其他连续的星号被认为是无效的。
为什么这种方法比node_modules/
更好
**
充当递归模式。它在monorepo项目中很有用,在子目录中有node_modules。**
将搜索目录中的所有node_modules并忽略它们。
https://stackoverflow.com/questions/29820791
复制相似问题