Как удалить диапазон 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)