threads / discuss / 47202

why can *some* git commands not be run from within .git directory?

Subject: why can *some* git commands not be run from within .git directory?

## tl;dr

3 messages between Nov 14, 2017 and Nov 14, 2017.

replies: 2people: 2as markdown or json

Robert P. J. Day· Nov 14, 2017, 09:18 UTC · lore
  just noticed something i was unaware of -- some git commands can't
be run if i'm in the .git directory, while others can. for example,
if i "cd .git", commands like this work just fine:
  $ git show
  $ git branch
  $ git log
but others seem unwilling to determine the "working tree":
  $ git status
  fatal: This operation must be run in a work tree
  $
and:
  $ git stash list
  fatal: /usr/libexec/git-core/git-stash cannot be used without a working tree.
  $

what's the distinction between commands that can work this way, and commands that can't?

rday

p.s. i will refrain from pointing out the inconsistency in using the phrases "work tree" and "working tree" to mean the same thing, when there is a distinct "worktree" entity.

-- 
========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================
Bryan Turner· Nov 14, 2017, 09:38 UTC · re: Robert P. J. Day · lore

Re: why can *some* git commands not be run from within .git directory?

On Tue, Nov 14, 2017 at 1:18 AM, Robert P. J. Day <rpjday@crashcourse.ca> wrote:
Show 10 quoted lines
>
>   just noticed something i was unaware of -- some git commands can't
> be run if i'm in the .git directory, while others can. for example,
> if i "cd .git", commands like this work just fine:
>
>   $ git show
>   $ git branch
>   $ git log
>
> but others seem unwilling to determine the "working tree":

Once Git finds a .git directory, or determines it's in one, it doesn't look "higher"; instead, it runs like it's in a bare clone. That means any command that requires a work tree or an index generally won't work. Of course, you can still tell Git where the work tree is and then the commands work fine from the .git directory:

incom@Jael MINGW64 /c/Temp/example/.git (GIT_DIR!) $ GIT_WORK_TREE=.. git status On branch master Your branch is up-to-date with 'origin/master'.

nothing to commit, working tree clean
Show 19 quoted lines
>
>   $ git status
>   fatal: This operation must be run in a work tree
>   $
>
> and:
>
>   $ git stash list
>   fatal: /usr/libexec/git-core/git-stash cannot be used without a working tree.
>   $
>
> what's the distinction between commands that can work this way, and
> commands that can't?
>
> rday
>
> p.s. i will refrain from pointing out the inconsistency in using the
> phrases "work tree" and "working tree" to mean the same thing, when
> there is a distinct "worktree" entity.
No you won't, clearly.
Show 10 quoted lines
>
> --
>
> ========================================================================
> Robert P. J. Day                                 Ottawa, Ontario, CANADA
>                         https://urldefense.proofpoint.com/v2/url?u=http-3A__crashcourse.ca&d=DwIBAg&c=wBUwXtM9sKhff6UeHOQgvw&r=uBedA6EFFVX1HiLgmpdrBrv8bIDAScKjk1yk9LOASBM&m=yPGW_MCaDCBECSMjz40m8vsxUhljCB3dnrQ4TBi8PtE&s=-JNZXqYtyY7CIJGy65WWa88Kq7BaelyajFehPQZkvo4&e=
>
> Twitter:                                       https://urldefense.proofpoint.com/v2/url?u=http-3A__twitter.com_rpjday&d=DwIBAg&c=wBUwXtM9sKhff6UeHOQgvw&r=uBedA6EFFVX1HiLgmpdrBrv8bIDAScKjk1yk9LOASBM&m=yPGW_MCaDCBECSMjz40m8vsxUhljCB3dnrQ4TBi8PtE&s=-9gIAxcdRGPmIz1rpLLb7nl14azEwoE-fOJ-IxAYi18&e=
> LinkedIn:                               https://urldefense.proofpoint.com/v2/url?u=http-3A__ca.linkedin.com_in_rpjday&d=DwIBAg&c=wBUwXtM9sKhff6UeHOQgvw&r=uBedA6EFFVX1HiLgmpdrBrv8bIDAScKjk1yk9LOASBM&m=yPGW_MCaDCBECSMjz40m8vsxUhljCB3dnrQ4TBi8PtE&s=prnIhreU-Vhx0V6lRCBQEPbJk2P8bPlHcRFus1X_6wM&e=
> ========================================================================
Robert P. J. Day· Nov 14, 2017, 09:43 UTC · re: Bryan Turner · lore

Re: why can *some* git commands not be run from within .git directory?

On Tue, 14 Nov 2017, Bryan Turner wrote:
Show 18 quoted lines
> On Tue, Nov 14, 2017 at 1:18 AM, Robert P. J. Day <rpjday@crashcourse.ca> wrote:
> >
> >   just noticed something i was unaware of -- some git commands can't
> > be run if i'm in the .git directory, while others can. for example,
> > if i "cd .git", commands like this work just fine:
> >
> >   $ git show
> >   $ git branch
> >   $ git log
> >
> > but others seem unwilling to determine the "working tree":
>
> Once Git finds a .git directory, or determines it's in one, it
> doesn't look "higher"; instead, it runs like it's in a bare clone.
> That means any command that requires a work tree or an index
> generally won't work. Of course, you can still tell Git where the
> work tree is and then the commands work fine from the .git
> directory:
  ah, thank you, that clarifies it.
rday
-- 
========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================

← back to recent threads