Update
This commit is contained in:
Executable
+97
@@ -0,0 +1,97 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# ===============================
|
||||||
|
# Git Stash Manager Script
|
||||||
|
# ===============================
|
||||||
|
|
||||||
|
# Aktuellen Branch ermitteln
|
||||||
|
CURRENT_BRANCH=$(git branch --show-current)
|
||||||
|
|
||||||
|
# ===============================
|
||||||
|
# Auswahl: Stash anlegen, laden oder löschen
|
||||||
|
# ===============================
|
||||||
|
echo "Was möchtest du tun?"
|
||||||
|
echo "1) Neuen Stash anlegen (aktueller Branch: $CURRENT_BRANCH)"
|
||||||
|
echo "2) Vorhandenen Stash anwenden (nur aktueller Branch)"
|
||||||
|
echo "3) Vorhandenen Stash löschen (nur aktueller Branch)"
|
||||||
|
|
||||||
|
read -p "Wähle eine Option (1-3): " ACTION
|
||||||
|
|
||||||
|
case "$ACTION" in
|
||||||
|
1)
|
||||||
|
# -------------------------------
|
||||||
|
# Neuer Stash (inkl. untracked Dateien)
|
||||||
|
# -------------------------------
|
||||||
|
read -p "Gib einen eigenen Namen für den Stash ein: " CUSTOM_NAME
|
||||||
|
if [[ -z "$CUSTOM_NAME" ]]; then
|
||||||
|
CUSTOM_NAME="WIP-$(date +%Y%m%d%H%M%S)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
STASH_NAME="${CURRENT_BRANCH} - ${CUSTOM_NAME}"
|
||||||
|
git stash push -u -m "$STASH_NAME"
|
||||||
|
echo "Änderungen (inkl. untracked files) erfolgreich gestasht unter dem Namen: '$STASH_NAME'"
|
||||||
|
git stash list | grep "On $CURRENT_BRANCH"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
# -------------------------------
|
||||||
|
# Vorhandenen Stash anwenden
|
||||||
|
# -------------------------------
|
||||||
|
echo "Liste aller Stashes für Branch '$CURRENT_BRANCH':"
|
||||||
|
BRANCH_STASHES=($(git stash list | grep "On $CURRENT_BRANCH" | cut -d: -f1))
|
||||||
|
|
||||||
|
if [[ ${#BRANCH_STASHES[@]} -eq 0 ]]; then
|
||||||
|
echo "Keine Stashes für diesen Branch vorhanden."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
i=1
|
||||||
|
declare -A STASH_MAP
|
||||||
|
for s in "${BRANCH_STASHES[@]}"; do
|
||||||
|
echo "$i) $s"
|
||||||
|
STASH_MAP[$i]=$s
|
||||||
|
((i++))
|
||||||
|
done
|
||||||
|
|
||||||
|
read -p "Gib die Nummer des Stashs ein, den du anwenden möchtest: " STASH_CHOICE
|
||||||
|
if [[ -z "${STASH_MAP[$STASH_CHOICE]}" ]]; then
|
||||||
|
echo "Ungültige Auswahl!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
git stash apply ${STASH_MAP[$STASH_CHOICE]}
|
||||||
|
echo "Stash ${STASH_MAP[$STASH_CHOICE]} angewendet."
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
# -------------------------------
|
||||||
|
# Vorhandenen Stash löschen
|
||||||
|
# -------------------------------
|
||||||
|
echo "Liste aller Stashes für Branch '$CURRENT_BRANCH':"
|
||||||
|
BRANCH_STASHES=($(git stash list | grep "On $CURRENT_BRANCH" | cut -d: -f1))
|
||||||
|
|
||||||
|
if [[ ${#BRANCH_STASHES[@]} -eq 0 ]]; then
|
||||||
|
echo "Keine Stashes für diesen Branch vorhanden."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
i=1
|
||||||
|
declare -A STASH_MAP
|
||||||
|
for s in "${BRANCH_STASHES[@]}"; do
|
||||||
|
echo "$i) $s"
|
||||||
|
STASH_MAP[$i]=$s
|
||||||
|
((i++))
|
||||||
|
done
|
||||||
|
|
||||||
|
read -p "Gib die Nummer des Stashs ein, den du löschen möchtest: " STASH_CHOICE
|
||||||
|
if [[ -z "${STASH_MAP[$STASH_CHOICE]}" ]]; then
|
||||||
|
echo "Ungültige Auswahl!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
git stash drop ${STASH_MAP[$STASH_CHOICE]}
|
||||||
|
echo "Stash ${STASH_MAP[$STASH_CHOICE]} gelöscht."
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Ungültige Option!"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
Reference in New Issue
Block a user