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

Re: stash push/pop unstages files?

From
Chris Torek <chris.torek@gmail.com>
Date
Sep 5, 2021, 17:15 UTC
Message-ID
<CAPx1Gvc6noTDYPt9x3b4_TE0z8-KE5cB6KQHcn5UL9pi0cKoGg@mail.gmail.com>
In-Reply-To
<0e1f7a47-89e3-5f49-663e-bdd3e8efb6e5@rawbw.com>
On Sun, Sep 5, 2021 at 10:12 AM Yuri <yuri@rawbw.com> wrote:
Show 9 quoted lines
> In one sub-directory I altered some files, added a directory with files
> and added the changes (git add .)
>
> Then I called 'git stash push && git stash pop'.
>
> After this the newly added directory remained in the staged status, but
> altered files became unstaged.
>
> Is this an intended behavior?
Yes.
> Why stash push/pop unstages files? Shouldn't it preserve the directory
> as-is?
It does, *provided* you invoke the pop step with `--index`.

When `git stash push` makes a stash, it saves both the index (staging area) and working tree, as two separate commits.

Later, at the time you apply the saved stash, you choose whether to use the saved index / staging-area (`--index`) or to discard it (no `--index`). The apply step uses the saved working tree in all cases, and if you also stashed untracked files with `-u` or `-a`, it uses this third commit as well.

The `pop` command is just `apply` followed by `drop` if the application succeeds.

Chris
Previous: YuriNext: Yuri
Message 2 of 4 in “stash push/pop unstages files?”
  1. YuriSep 5, 2021
  2. Chris TorekSep 5, 2021
  3. YuriSep 5, 2021
  4. Chris TorekSep 5, 2021

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.