How to add a folder to the .gitignore

19,919

If you want to ignore folder, you need a trailing slash:

bower_components/

Then check if the rule apply with git check-ignore -v (the -v is important if you want to see the exact .gitignore file and line which causes a file to be ignored)

git check-ignore -v -- bower_components/afile

If that does not apply, then remove the content of that folder from the history of that repo:

git rm --cached -r -- bower_components/
git add .
git commit -m "Remove bower_components folder"

Then the .gitignore rule will take effect immediatly.

Share:
19,919
LOTUSMS
Author by

LOTUSMS

15 Yrs Experience in UI/UX Engineering CEO/Owner LOTUS Marketing Solutions LLC Senior Software Engineer. Senior User Experience Adviser for the Commonwealth of Pennsylvania 14 yrs service in the US Army (2/75 RGR B-Co) 5 Tours (3 Afghanistan, 2 Iraq) Purple Heart (3), Bronze Star with Valor Device

Updated on June 03, 2022

Comments

  • LOTUSMS
    LOTUSMS almost 2 years

    Maybe my Googling skills are lacking but this seems like a question that should give me back thousands of hits and yet, I can't find a straight answer.

    Simple as this:

    I do constant pushes to github to share with a remote developer. We both have npm and bower installed. No need to push these huge folders to github all the time. My node_modules are ignored. But I can't seem to get gitignore to ignore my bower_components folder

    I'm not too savvy on cmd, I barely scratch the surface so if you ar going to suggest that, please don't assume I know what you are talking about. Otherwise if it is as easy as adding it to the file itself using an IDE, well, I did that and no cigar. Here is my .gtignore file for your review

    # Logs
    logs
    *.log
    npm-debug.log*
    
    # Runtime data
    pids
    *.pid
    *.seed
    
    # Directory for instrumented libs generated by jscoverage/JSCover
    lib-cov
    
    # Coverage directory used by tools like istanbul
    coverage
    
    # nyc test coverage
    .nyc_output
    
    # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-    task-files)
    .grunt
    
    # node-waf configuration
    .lock-wscript
    
    # Compiled binary addons (http://nodejs.org/api/addons.html)
    build/Release
    
    # Dependency directories
    node_modules
    jspm_packages
    bower_components
    
    # Optional npm cache directory
    .npm
    
    # Optional REPL history
    .node_repl_history
    

    Am I missing anything? How do I make the bower_components ignored?

    Thank you

  • LOTUSMS
    LOTUSMS almost 8 years
    Thank you for your response. The first set of instructions returned no errors. and the check ignore did identify that line 32 contained an ignore rule for bower but on commit, the bower folder remained in github. So I assume that your last set of instructions are for removing that from github but it returned an error where pathspec "rr" did not match any files. Am I supposed to replace rr for bower_components
  • VonC
    VonC almost 8 years
    @LOTUSMS Sorry, it was a type: -r (for --recursive), before the --
  • VonC
    VonC almost 8 years
    @LOTUSMS And that last set of instruction of for removing that folder from the index, locally. Not from GitHub. You would need to push your branch to GitHub for GitHub to reflect your local repo history.
  • LOTUSMS
    LOTUSMS almost 8 years
    lol. I figured, after I checked out the link someone commented above. But your question did help me. Thank you very much. Hopefully this question/answer gets a lot of visibility. It's basically the only straight answer in the internet so far
  • LOTUSMS
    LOTUSMS almost 8 years
    Right. That's what I meant. I did a commit and it is all great now!
  • A_P
    A_P about 4 years
    how's -v important? it is just the reporting level
  • VonC
    VonC about 4 years
    @A_P That I prefer always using -v, because it reports the actual .gitignore path and the line within that .gitignore, when a file is ignored. Without -v, it just prints the file if it is ignored, but you don't know what .gitignore directive is actually involved.
  • A_P
    A_P about 4 years
    @VonC exactly my point. But your answer makes it look as if it will not work without -v.
  • VonC
    VonC about 4 years
    @A_P It won't be useful without. I will edit the answer.
  • Y Bai
    Y Bai almost 2 years
    @Vonc what does the double dash '--' do? (git rm --cached -r -- bower_components/)
  • Y Bai
    Y Bai almost 2 years
    Thanks. I got it from git rm --help -- This option can be used to separate command-line options from the list of files, (useful when filenames might be mistaken for command-line options).
  • VonC
    VonC almost 2 years
    @YBai Sorry for the late answer. I documented the double hyphen syntax back in 2009: stackoverflow.com/a/1192194/6309