git/list[1] front-page[2] threads[3] people[4] search[5] about
 

git stash doesn't honor --work-tree or GIT_WORK_TREE

From
ABAaron Brooks <aaron@brooks1.net>
Date
Nov 30, 2013, 19:04 UTC
Message-ID
<CABL6xpD9jvJWjUj0n+mgC419fGzA2N-b_yJho9zharCD6YTSiw@mail.gmail.com>

Unlike other commands, git stash doesn't work outside of the worktree, even when --work-tree is specified:

abrooks@host:~/tmp$ mkdir test-repo
abrooks@host:~/tmp$ cd !$
cd test-repo
abrooks@host:~/tmp/test-repo$ git init
Initialized empty Git repository in /home/abrooks/tmp/test-repo/.git/
abrooks@host:~/tmp/test-repo$ echo "foo" > foo.txt
abrooks@host:~/tmp/test-repo$ git add foo.txt
abrooks@host:~/tmp/test-repo$ git commit -m "adding foo"
[master (root-commit) 9d0705e] adding foo
 1 file changed, 1 insertion(+)
 create mode 100644 foo.txt
abrooks@host:~/tmp/test-repo$ echo "bar" >> foo.txt
abrooks@host:~/tmp/test-repo$ cd ..
abrooks@host:~/tmp$ git --git-dir=./test-repo/.git --work-tree=./test-repo stash
fatal: /usr/lib/git-core/git-stash cannot be used without a working tree.
abrooks@host:~/tmp$ cd test-repo/
abrooks@host:~/tmp/test-repo$ git stash
Saved working directory and index state WIP on master: 9d0705e adding foo
HEAD is now at 9d0705e adding foo
abrooks@host:~/tmp/test-repo$ cd ../
abrooks@host:~/tmp$ git --git-dir=./test-repo/.git
--work-tree=./test-repo stash list
fatal: /usr/lib/git-core/git-stash cannot be used without a working tree.
The same also does not work when setting GIT_DIR and GIT_WORK_TREE.
As a user, this seems wrong.

It looks like the "require_work_tree" function should check the environment variables in addition to the status of the PWD (via git-rev-parse).

Having looked through several of the other git-*.sh scripts, I think other shell based git commands will have similar problems.

Thanks,
Aaron
Next: Øystein Walle
Message 1 of 7 in “git stash doesn't honor --work-tree or GIT_WORK_TREE”
  1. Aaron BrooksNov 30, 2013
  2. Øystein WalleNov 30, 2013
  3. Thomas RastDec 1, 2013
  4. Duy NguyenDec 1, 2013
  5. Thomas RastDec 1, 2013
  6. Junio C HamanoDec 2, 2013
  7. Øystein WalleDec 1, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.