How to find the path of the local git repository when I am possibly in a subdirectory

GitPathEnvironment

Git Problem Overview


I'm looking for something like git list-path printing the path of the associated repository (the .git directory).

A bit of background: I have set up git version control on quite a few of my projects/folders. Some of them are nested, so one directory with echo own repository is a subfolder to another directory tracked with another repository.

E.g. in my home directory (~) I use git to track my dot files, but in folder ~/photo/meta-mix/ I have another project I track with a separate repository. Now, say,I have set up another project in directory ~/photo/meta-match/, but I don't know anymore whether it has its own repository. So I want to find out whether this directory is version controlled and where its repository is.

How can I do this with a git command? git status can give me

nothing to commit

in both cases, when ~/photo/meta-match/ has its own repository or when it just refers to the repository of ~.

Git Solutions


Solution 1 - Git

git rev-parse --show-toplevel

could be enough if executed within a git repo.
From git rev-parse man page:

--show-toplevel

> Show the absolute path of the top-level directory.

For older versions (before 1.7.x), the other options are listed in "Is there a way to get the git root directory in one command?":

git rev-parse --git-dir

That would give the path of the .git directory.


The OP mentions:

git rev-parse --show-prefix

which returns the local path under the git repo root. (empty if you are at the git repo root)


Note: for simply checking if one is in a git repo, I find the following command quite expressive:

git rev-parse --is-inside-work-tree

And yes, if you need to check if you are in a .git git-dir folder:

git rev-parse --is-inside-git-dir

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionhalloleoView Question on Stackoverflow
Solution 1 - GitVonCView Answer on Stackoverflow