Как удалить диапазон git stash?

Я хочу удалить все stash'es, кроме последних, из git stash list.

например. Я хочу удалить stash от 1 до 3 в одной команде git:

[email protected]{0}: On master: Test related changes
[email protected]{1}: On master: Tets
[email protected]{2}: On master: Integrate bunyan logging and http2
[email protected]{3}: On master: Integrate bunyan logging and http2

Я проверил этот ответ qaru.site/info/21152/..., но применил его для удаления только одного тайника. Есть ли команда git для удаления диапазона stash es?

Ответ 1

Короткий ответ: нет.

Слегка длинный ответ: нет, но это тривиально. Вы хотите сбросить отметки 1, 2 и 3. Когда вы бросаете закладочный номер 1, пристыки 2 и 3 становятся штемпелями 1 и 2 соответственно. Когда вы бросаете новый stash # 1, stash # 2 (который был № 3 изначально) становится stash # 1. Поэтому, чтобы отбросить три строчки, начиная с №1, просто три раза удалите stash # 1.

Ответ 2

Если вы хотите удалить stash с 1 по 3, просто перейдите в оболочку и введите следующую команду:

for n in {1..3}
do
git stash drop [email protected]{1}   
done

Выход

Dropped [email protected]{1} (79f369e9c4ce8348af8bd2da63f384cc7d02655e)
Dropped [email protected]{1} (744d2fc40e25f2db1bdc182d41f6eb9134957df4)
Dropped [email protected]{1} (7f9989207a675549866ab1fc7b15082eb4161e9f)

В качестве git stash использует структуру стека, каждый раз, когда вы бросаете n-й индекс, индексы стека уменьшаются на 1. Таким образом, в конечном итоге вы заканчиваете падение с 1 по 3. Таким образом, вы также можете сбросить набросок длины n, просто повторяя:

for n in {1..n}
do
git stash drop [email protected]{1}   
done

Ответ 3

Я бы добавил что-то дополнительное к ответу ниже Если вы хотите также зарегистрировать индекс сброшенных stashов Вы можете использовать нисходящий порядок и $n, как показано ниже

for n in {3..1}; do git stash drop [email protected]{$n}; done;

На выходе будет что-то вроде..

Dropped [email protected]{3} (beeaf3629b53d612b1a3fabb7b0c4f77d17e9b71)
Dropped [email protected]{2} (5a687ca9a93b3190882a9af2c15134e75f063f41)
Dropped [email protected]{1} (e33dfc42d03166def5dbb60baa975efb21b27f07)