TL;DR: To check if
$PATH
is a Git repository:git -C $PATH rev-parse 2>/dev/null; echo $? # 0 = git repository
Problem
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 (e.g., 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 of when the current working directory is not a git repository:
git -C . rev-parse 2>/dev/null; echo $?
128