Как использовать псевдоним git checkout && git stash

Итак, у меня есть две ветки master и formtest

У меня есть [псевдоним] "git switch", который позволяет мне спрятать любые работы и проверять другую ветку.

"Git Switch"

switch = !git stash && git checkout

Теперь я хочу создать [псевдоним]

"мерзавец"

switchback = ???

когда я запускаю это, я хочу сказать

переключиться на эту ветку "formtest"

а затем запустить тайник применить

распаковать последний WIP и вернуть вещи обратно перед первым запуском "git switch"

3 ответа

git checkout $(git log --format=%B -n 1 stash@{0} | grep -oP '(?<=^WIP on )[^(:][^:]*' || git rev-parse stash@{0}^)

При этом будет проанализировано последнее сообщение о сохранении, содержащее имя ветви, в которой оно было создано. Если не было ответвления (отсоединенного HEAD), он будет проверять родительский коммит тайника.

Чтобы вернуться в ветку, над которой вы работали раньше

git checkout - && git stash apply

- будет работать аналогично - в cd - например, переключиться обратно на последнюю ветвь (местоположение), которую вы использовали.


Но будьте осторожны, что это будет checkout неправильная ветвь, если вам случится checkout другая ветвь между ними.

Вы можете определить функцию оболочки и немедленно вызвать ее:

      git config --global alias.switchback 'f() { git checkout "$1" && git stash apply; }; f'

Затем позвоните:

      git switchback master # switch to master and apply stash
git switchback - # switch to previous branch and apply stash

Вы можете сделать псевдоним по умолчанию-(предыдущая ветка) довольно легко:

      git config --global alias.switchback 'f() { git checkout "${1:--}" && git stash apply; }; f'

затемgit switchbackперейдет на предыдущую ветку и применит заначку, но все равно можно запуститьgit switchback branchnameперейти на другую ветку.

Другие вопросы по тегам