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

possible bug of git stash deleting uncommitted files in corner case

From
Daniele Segato <daniele.segato@gmail.com>
Date
Apr 22, 2016, 11:46 UTC
Message-ID
<CAND5yRvCK9YuVOJ91CHbnbWAVYcPrpihGkoKs28f7PJgzRwW6Q@mail.gmail.com>
Hi,

my coworker today claimed git stash deleted his files, I made him explain me what he did and I think it could actually be a bug even if happening only in a corner case better explained with code to reproduce:

git init echo 'X' > foo git add foo git commit -m 'foo file committed'

what follow is the corner case I'm talking about: he deleted the file, created a directory with THE SAME name and added lot of files in it, in this example I'll only add one

rm foo mkdir foo echo 'B' > foo/bar

at this point the working directory looks like this:
 $ tree
.
└── foo
    └── bar
1 directory, 1 file
but apparently git status does not seem to see foo directory at all:

$ git status On branch master Changes not staged for commit:

          deleted:    foo
no changes added to commit (use "git add" and/or "git commit -a")
I expected something more like:

$ git status On branch master Changes not staged for commit:

          deleted: foo
Untracked files:
          foo/
no changes added to commit (use "git add" and/or "git commit -a")
Anyway he went on and decided to stash his work:
git stash

at this point stash deleted the "bar" file, in his case all the work on the previous couple of hours, but he didn't know yet

$ git stash show stash@{0} foo | 1 - 1 file changed, 1 deletion(-)

the foo directory was gone, replaced by the foo file
git stash pop
did not complained and deleted foo file again

I know my co-worker shouldn't had created a directory with the same file he was deleting but I also think git shouldn't have allowed him to stash at all, or should have been cleaver enough to actually stash the directory with its files.

Regards, Daniele Segato

Next: Daniele Segato
Message 1 of 6 in “possible bug of git stash deleting uncommitted files in corner case”
  1. Daniele SegatoApr 22, 2016
  2. Daniele SegatoApr 22, 2016
  3. Remi Galan AlfonsoApr 22, 2016
  4. Junio C HamanoApr 22, 2016
  5. Remi Galan AlfonsoApr 22, 2016
  6. Jeff KingApr 23, 2016

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.