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

Re: Can I remove multiple stashed states at a time?

From
Jeff King <peff@peff.net>
Date
Oct 14, 2017, 18:05 UTC
Message-ID
<20171014180549.q35km6t44pkpwzdh@sigill.intra.peff.net>
In-Reply-To
<20171014150123.GA28038@alpha.vpn.ikke.info>
On Sat, Oct 14, 2017 at 05:01:23PM +0200, Kevin Daudt wrote:
Show 20 quoted lines
> On Fri, Oct 13, 2017 at 01:35:22PM -0400, Jeff King wrote:
> > On Fri, Oct 13, 2017 at 11:58:12AM +0900, 小川恭史 wrote:
> > 
> > You can also just do:
> > 
> >   for i in 1 2 3; do
> >      git stash drop $i
> >   done
> > 
> 
> Doesn't stash 2 become stash 1 after the first drop, and the same for 3,
> resulting in dropping stash 1, 3 and 5?
> 
> So something like
> 
>   for i in 3 2 1; do
>       git stash drop $i;
>   done
> 
> Or leave $i out altogether.
Oops, you're right.

For that matter, I didn't double check that a single "reflog delete" handles this case correctly. That should be easy to test, though:

  git init
  echo base >file
  git add file
  git commit -m base
  for i in $(seq 10); do
    echo $i >file
    git stash push -m $i
  done
  git reflog delete --updateref --rewrite refs/stash@{1} refs/stash@{2} refs/stash@{3}
That seems to leave:
  $ git stash list
  stash@{0}: On master: 10
  stash@{1}: On master: 8
  stash@{2}: On master: 6
  stash@{3}: On master: 4
  stash@{4}: On master: 3
  stash@{5}: On master: 2
  stash@{6}: On master: 1

which is not what we wanted (I'd guess also that it rewrites the reflog 3 times, negating any efficiency I claimed earlier).

-Peff
Previous: Kevin Daudt
Message 4 of 4 in “Can I remove multiple stashed states at a time?”
  1. 小川恭史Oct 13, 2017
  2. Jeff KingOct 13, 2017
  3. Kevin DaudtOct 14, 2017
  4. Jeff KingOct 14, 2017

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.