问题
I have a project containing multiple other projects :
- Main project
- Mini project 1
- Mini project 2
All containing node_modules
folder. I want git to ignore the folder no matter where it is starting from the root folder. Something like this to add in .gitignore :
*node_modules/*
回答1:
Add this
node_modules/
to .gitignore
file to ignore all directories called node_modules
in current folder and any subfolders
回答2:
Use the universal one-liner in terminal in the project directory:
touch .gitignore && echo "node_modules/" >> .gitignore && git rm -r --cached node_modules ; git status
It works no matter if you've created a .gitignore
or not, no matter if you've added node_modules
to git tracking or not.
Then commit and push the .gitignore
changes.
Explanation
touch
will generate the .gitignore
file if it doesn't already exist.
echo
and >>
will append node_modules/
at the end of .gitignore
, causing the node_modules
folder and all subfolders to be ignored.
git rm -r --cached
removes the node_modules
folder from git control if it was added before. Otherwise, this will show a warning pathspec 'node_modules' did not match any files
, which has no side effects and you can safely ignore. The flags cause the removal to be recursive and include the cache.
git status
displays the new changes. A change to .gitignore
will appear, while node_modules
will not appear as it is no longer being tracked by git.
回答3:
First and foremost thing is to add .gitignore
file in my-app. Like so in image below.
and next add this in your .gitignore
file
/node_modules
Note
You can also add others files too to ignore them to be pushed on github. Here are some more files kept in .gitignore. You can add them according to your requirement. #
is just a way to comment in .gitignore file.
# 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*
回答4:
Try doing something like this
**/node_modules
**
is used for a recursive call in the whole project
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.
Reference
回答5:
Create .gitignore file in root folder directly by code editor or by command
For Mac & Linux
touch .gitignore
For Windows
echo .gitignore
open .gitignore declare folder or file name like this /foldername
来源:https://stackoverflow.com/questions/29820791/git-ignore-node-modules-folder-everywhere