Для сценариев используйте git stash create
(который создает хэш-идентификатор созданного тайника на стандартном выходе или ничего на стандартном выводе, если тайник не был создан).Затем вы можете использовать git stash store
, чтобы вставить созданный тайник как stash@{0}
, если и только если он действительно был создан.
Если ваш Git слишком стар, чтобы иметь git stash create
, вы можете запустить два git rev-parse
команды на refs/stash
до и после выполнения git stash save
. 1 Они могут:
- Обе команды не выполнены: тайник не был до и нет тайника после.
- Первый сбой, второй успешный: раньше не было тайника, а теперь есть, значит, он был создан.
- Оба успешно, с двумя выходными строками, совпадающими (без хранилища) или отличающимися (Создан тайник).
Таким образом, если вы используете --quiet --verify
и фиксируете фактический вывод каждого из них, вы можете сказать, был ли создан тайник.То есть, здесь применяется фрагмент программирования:
old=$(git rev-parse --quiet --verify refs/stash)
git stash save || die ...
new=$(git rev-parse --quiet --verify refs/stash)
if [ "$old" != "$new" ]; then
made_stash=true
else
made_stash=false
fi
... do things ...
if $made_stash; then ... do things with the stash you made ...
(я рекомендую избегать как git stash
, так и git pull
, за исключением очень ограниченных, специализированных обстоятельств. Я имелслишком много плохого опыта с ними.)
1 Если вашему Git не хватает git stash create
, он, вероятно, также предшествует git stash push
и, следовательно, вам нужно git stash save
.