Re: describe with --git-dir and --dirty outside of the repo always says dirty
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Mar 16, 2026, 08:22 UTC
- Message-ID
- <abe9uDp16zOcdzZs@pks.im>
- In-Reply-To
- <xmqq8qbv4gnq.fsf@gitster.g>
On Fri, Mar 13, 2026 at 01:29:29PM -0700, Junio C Hamano wrote:
Show 32 quoted lines
> Thomas Braun <thomas.braun@virtuell-zuhause.de> writes: > > > When I do > > > > git describe --dirty > > > > in clean repo of git.git I get > > > > v2.53.0-522-g67006b9db8 > > > > but when I do it from outside of the repo > > > > cd .. > > git --git-dir=git/.git describe --dirty > > "--git-dir" tells git "I am at the root of the working tree, but the > git directory that you usually find at ".git" (or a parent directory > of where we are) is not where you expect but somewhere else, so I am > telling you where it is with this argument. > > So if you are not at the root of the working tree for that working > tree, "git --git-dir=git/.git diff" would report that you have a ton > of changes to working tree files, and "describe" would report that > your working tree is dirty. > > In other words, working as intended. > > You can tell where the working tree is (instead of telling the > command that you are at the root of the working tree, when you are > not), with the "--work-tree" option. > > $ git --git-dir=git/.git --work-tree=git describe --dirty
You can do that, but what you're probably looking for is `-C`:
$ git -C /path/to/git describe --dirty
As Junio pointed out, "--git-dir" has a different effect, and you typically don't have to use it unless you're doing weird stuff.
Patrick