Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"git add" using wildcard is not functioning as I hoped - must I cd into specific directories?

Tags:

git

bash

wildcard

When I try to do a basic git add *.erb (or any simple wildcard expressions) git is not recognizing it (them). As a side-note, I have never done this before so I'm sure it's a rookie mistake, but I've found no help in other SO posts or my school's alumni listserv so I thought this post may be appropriate.

For (a different) example, git status is giving me:

#   modified:   config/routes.rb #   modified:   spec/models/question_spec.rb 

I wanted to only stage the routes file, so I tried git add *s.rb and no dice. I am in the root of the app...do I need to be in the directory that contains the file(s) I'm trying to apply the wildcard expression to? That would be painful, but...actually...it just worked.

Hope this doesn't have to be a separate post, but is there an easier way to use wildcards where you don't have to cd into the specific directory?

like image 590
RudyOnRails Avatar asked Aug 22 '12 04:08

RudyOnRails


People also ask

Does git add add ignored files?

The git add command will not add ignored files by default. If any ignored files were explicitly specified on the command line, git add will fail with a list of ignored files.

How do I move a folder to another folder in git?

Alt-click and drag over the file/folder name column, then copy.


1 Answers

Put it around single quotes. This should work.

git add '*s.rb'

UPDATE

After more testing, I find out that I can even do git add *s.rb without quotes. This might just work for me with my git version 1.7.10.4 (Mac OSX Lion, homebrew). My explanation is that if shell wildcards expansion doesn't match any file, it'd supply the original unexpanded argument '*s.rb' to git add.

sh-3.2$ git status # #   modified:   config/routes.rb #   modified:   spec/models/products_spec.rb # 

Now I do git add without quotes.

sh-3.2$ git add *s.rb 

Surprisingly it works!

sh-3.2$ git status # On branch master # Changes to be committed: #   (use "git reset HEAD <file>..." to unstage) # #   modified:   config/routes.rb # # Changes not staged for commit: #   (use "git add <file>..." to update what will be committed) #   (use "git checkout -- <file>..." to discard changes in working directory) # #   modified:   spec/models/products_spec.rb # 

If wildcard pattern doesn't match any file, git will give out this error.

sh-3.2$ git add *x.rb fatal: pathspec '*x.rb' did not match any files 
like image 177
chifung7 Avatar answered Sep 20 '22 18:09

chifung7