Вы можете создать псевдоним для git stash pop или применить, который проверяет отличия от HEAD.
[alias]
pop = !"f() { { git diff-index --quiet HEAD && git stash pop \"$@\"; } || echo \"Can't pop, you have local changes\"; }; f "
apply = !"f() { { git diff-index --quiet HEAD && git stash apply \"$@\"; } || echo "Can't apply, you have local changes"; }; f"
Префикс с !
и перенос их в вызов функции f() { ... }; f "
, позволяет передавать аргументына git stash pop
и git stash apply
.
Команда git diff-index --quiet HEAD
вернет 0 или 1 в зависимости от того, есть ли локальные изменения, тогда ярлыки &&
и ||
либо продолжайте работу с git stash pop / apply, либо выводите сообщение об ошибке.
Перенос первой части, которая использует ярлык &&
, в фигурные скобки (так что это { a && b; } || c
) предотвращает сообщение об ошибке, которое использует||
срабатывание ярлыка, когда всплывающее окно или применить не удается.
Затем вы можете использовать git pop
для безопасного запуска git stash pop
без вмешательства в другие изменения.