TL;DR:
$ git -C <path> rev-parse 2>/dev/null $ echo $? # 0 = git repository
If you try to run a git command in a directory that’s not a repository, you’ll get:
$ git status
fatal: not a git repository (or any of the parent directories): .git
So how can you tell if a directory is within a git repository?
You can get the exit status code ($?
) from git commands like git status
:
$ git status 2>/dev/null
$ echo $?
0
Exit code of 0
means it’s a git repository. Any other code (like 128
) means it’s not.
git rev-parse
For better performance and to specify a path, you can use git rev-parse
:
git -C <path> rev-parse 2>/dev/null
Here’s an example when the current working directory is not a git repository:
$ git -C . rev-parse 2>/dev/null
$ echo $?
128