Find files that are not in .gitignore
git
provides git-check-ignore
to check whether a file is excluded by .gitignore
.
So you could use:
find . -type f -not -path './node_modules*' \
-a -not -path '*.git*' \
-a -not -path './coverage*' \
-a -not -path './bower_components*' \
-a -not -name '*~' \
-exec sh -c '
for f do
git check-ignore -q "$f" ||
printf '%s\n' "$f"
done
' find-sh {} +
Note that you would pay big cost for this because the check was performed for each file.
there is a git command for doing exactly this: e.g.
my_git_repo % git grep --line-number TODO
desktop/includes/controllers/user_applications.sh:126: # TODO try running this without sudo
desktop/includes/controllers/web_tools.sh:52: TODO: detail the actual steps here:
desktop/includes/controllers/web_tools.sh:57: TODO: check if, at this point, the menurc file exists. i.e. it was created
As you stated, it will do a basic grep will most of the normal grep options, but it will not search .git
or any of the files or folders in your .gitignore
file.
For more details, see man git-grep
Submodules:
If you have other git repos inside this git repo, (they should be in submodules) then you can use the flag --recurse-submodules
to search in the submodules as well
To show files that are in your checkout and that are tracked by Git, use
$ git ls-files
This command has a number of options for showing, e.g. cached files, untracked files, modified files, ignored files etc. See git ls-files --help
.