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: 1which is not what we wanted (I'd guess also that it rewrites the reflog 3 times, negating any efficiency I claimed earlier).
-Peff