git: How do I recursively add all files in a directory subtree that match a glob pattern?

南笙酒味 提交于 2019-12-03 04:04:10

问题


I have several .screen files inside /xxx/documentation and its subdirectories that are already tracked by Git.

After modifying many of these screen files, I run git add documentation/\\*.screen—as indicated by the first example in git-add's documentation—to stage these files, but the command fails:

fatal: pathspec 'documentation/\*.screen' did not match any files

Is my command bad, or does git have a bug?


回答1:


It's a bug in the documentation. Quote the asterisk with

$ git add documentation/\*.screen

or

$ git add 'documentation/*.screen'

to get the behavior you want.

If instead you want to add files in the current directory only, use

$ git add *.screen

UPDATE: I submitted a patch that corrects the issue, now fixed as of version 1.6.6.2.




回答2:


I've tried the accepted answer, but it didn't worked for me.. so here's mine just in case someone wants to get it's job done without spending time in dissecting various aspects that might cause the problem:

find documentation -name "*.screen" | xargs git add -u

//the -u option to git-add adds to index just the files that were previously tracked and modified




回答3:


You told the shell to look for *.screen (i.e. exactly this string - which doesn't exist - instead of what you want "all files that end with .screen). Omit the \\ so the shell can do the file name expansion for you.




回答4:


This what I just used for a similar problem of git adding all the files in a directory:

find . | sed "s/\(.*\)/\"\1\"/g" | xargs git add 

For the original question the command would be:

find -name "*.screen" | sed "s/\(.*\)/\"\1\"/g" | xargs git add 

Note that I'm dealing with the case where a fully specified file name contains spaces. Thats why my answer. Edit the portion before the first | in order to pick out different files to add.




回答5:


git add *.java works for me to add recursively all the java files




回答6:


try

git add ./documentation/*.screen


来源:https://stackoverflow.com/questions/2221408/git-how-do-i-recursively-add-all-files-in-a-directory-subtree-that-match-a-glob

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!