On Sat, Oct 14, 2017 at 05:01:23PM +0200, Kevin Daudt wrote:
> 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