Check if path is git repository


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


If you enjoyed this post, please consider supporting this site!