diff --git a/common/general/shell/common.nix b/common/general/shell/common.nix index f56e6e7..2beb549 100644 --- a/common/general/shell/common.nix +++ b/common/general/shell/common.nix @@ -45,8 +45,6 @@ with lib; cl = "clear"; # git - stash = "git stash"; - pop = "git stash pop"; branch = "git checkout -b"; status = "git status"; diff = "git diff"; diff --git a/common/general/shell/common.sh b/common/general/shell/common.sh index 9b94acf..c9c359c 100644 --- a/common/general/shell/common.sh +++ b/common/general/shell/common.sh @@ -139,6 +139,30 @@ from_master () { git checkout $(getdefault) $@ } +stash() { + local branch + branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) + local datetime + datetime=$(date +"%Y-%m-%d_%H-%M") + local default_label="${datetime}_${branch}" + if [ -n "$ZSH_VERSION" ]; then + read "label?Stash label [default: $default_label]: " + else + read -e -p "Stash label [default: $default_label]: " label + fi + label=${label:-$default_label} + git stash push -m "$label" +} + +pop() { + local selection + selection=$(git stash list | fzf --prompt="Select stash to pop: " --preview="git stash show -p $(echo {} | awk -F: '{print $1}') | bat --color always --paging=never -l diff") + [ -z "$selection" ] && echo "No stash selected." && return 1 + local stash_ref + stash_ref=$(echo "$selection" | awk -F: '{print $1}') + echo "Popping $stash_ref..." + git stash pop "$stash_ref" +} # nix alias nixpkgs=nixpkg