Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove range of git stash?

Tags:

I want to remove all stash'es, except most recent, from git stash list.

E.g. I want to remove stash 1 to 3 in a single git command:

stash@{0}: On master: Test related changes
stash@{1}: On master: Tets
stash@{2}: On master: Integrate bunyan logging and http2
stash@{3}: On master: Integrate bunyan logging and http2

I checked this answer https://stackoverflow.com/a/5737041/3878940, but its applicable to delete only a single stash. Is there any git command to delete a range of stashes?

like image 823
Aditya Singh Avatar asked Jan 25 '17 15:01

Aditya Singh


People also ask

How do I remove a specific git stash?

If you no longer need a particular stash, you can delete it with: $ git stash drop <stash_id> . Or you can delete all of your stashes from the repo with: $ git stash clear .

Does git clean delete stash?

Cleaning up the stash You must do this manually with the following commands: git stash clear empties the stash list by removing all the stashes.

Which command is used to remove stash item?

The git stash drop command is used to delete a stash from the queue.


2 Answers

If you want to delete stash 1 to 3,just go to shell and type the following command:

for n in {1..3}
do
git stash drop stash@{1}   
done

Output

Dropped stash@{1} (79f369e9c4ce8348af8bd2da63f384cc7d02655e)
Dropped stash@{1} (744d2fc40e25f2db1bdc182d41f6eb9134957df4)
Dropped stash@{1} (7f9989207a675549866ab1fc7b15082eb4161e9f)

As git stash uses stack structure, each time you drop nth index, stack indexes decreases by 1. So eventually, you end up dropping stashes 1 to 3. So, like this you can also drop a stash of length n just iterating like :

for n in {1..n}
do
git stash drop stash@{1}   
done
like image 192
majin Avatar answered Sep 20 '22 18:09

majin


Short answer: no.

Slightly longer answer: no, but it's trivial. You want to drop stashes 1, 2, and 3. When you drop stash #1, stashes 2 and 3 become stashes 1 and 2 respectively. When you drop the new stash #1, stash #2 (which was #3 originally) becomes stash #1. Therefore, to drop three stashes, starting with #1, simply drop stash #1 three times.

like image 21
torek Avatar answered Sep 20 '22 18:09

torek