Update
This commit is contained in:
+87
-71
@@ -1,90 +1,106 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# ===============================
|
# ===============================
|
||||||
# Git Stash Manager Script
|
# Git Stash Manager mit Branch-Filter und Überschreiben
|
||||||
# ===============================
|
# ===============================
|
||||||
|
|
||||||
# Aktuellen Branch ermitteln
|
# Aktuellen Branch ermitteln
|
||||||
CURRENT_BRANCH=$(git branch --show-current)
|
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||||
|
|
||||||
|
echo "Aktueller Branch: $CURRENT_BRANCH"
|
||||||
echo "Was möchtest du tun?"
|
echo "Was möchtest du tun?"
|
||||||
echo "1) Neuen Stash anlegen (aktueller Branch: $CURRENT_BRANCH)"
|
echo "1) Neuen Stash anlegen"
|
||||||
echo "2) Vorhandenen Stash anwenden (nur aktueller Branch)"
|
echo "2) Vorhandenen Stash laden"
|
||||||
echo "3) Vorhandenen Stash löschen (nur aktueller Branch)"
|
echo "3) Vorhandenen Stash löschen"
|
||||||
|
read -p "Auswahl: " action
|
||||||
|
|
||||||
read -p "Wähle eine Option (1-3): " ACTION
|
case $action in
|
||||||
|
1)
|
||||||
|
# ========== Neuen Stash anlegen ==========
|
||||||
|
read -p "Gib einen Namen für den Stash ein: " USER_INPUT
|
||||||
|
STASH_NAME="$CURRENT_BRANCH - $USER_INPUT"
|
||||||
|
|
||||||
case "$ACTION" in
|
# Prüfen, ob Stash-Name schon existiert
|
||||||
1)
|
EXISTING=$(git stash list | grep "$STASH_NAME")
|
||||||
# Neuer Stash (inkl. untracked Dateien)
|
if [[ -n "$EXISTING" ]]; then
|
||||||
read -p "Gib einen eigenen Namen für den Stash ein: " CUSTOM_NAME
|
echo "Ein Stash mit dem Namen '$STASH_NAME' existiert bereits."
|
||||||
if [[ -z "$CUSTOM_NAME" ]]; then
|
# Alle passenden Stashes löschen
|
||||||
CUSTOM_NAME="WIP-$(date +%Y%m%d%H%M%S)"
|
while IFS= read -r line; do
|
||||||
fi
|
STASH_REF=$(echo "$line" | awk -F: '{print $1}')
|
||||||
|
echo "Lösche vorhandenen Stash: $STASH_REF"
|
||||||
|
git stash drop "$STASH_REF"
|
||||||
|
done <<< "$EXISTING"
|
||||||
|
fi
|
||||||
|
|
||||||
STASH_NAME="${CURRENT_BRANCH} - ${CUSTOM_NAME}"
|
# Neuen Stash anlegen (inkl. untracked Dateien)
|
||||||
git stash push -u -m "$STASH_NAME"
|
git stash push -u -m "$STASH_NAME"
|
||||||
echo "Änderungen erfolgreich gestasht unter dem Namen: '$STASH_NAME'"
|
echo "Stash '$STASH_NAME' wurde angelegt."
|
||||||
git stash list | grep "On $CURRENT_BRANCH"
|
;;
|
||||||
;;
|
|
||||||
2)
|
|
||||||
# Stash anwenden
|
|
||||||
echo "Liste aller Stashes für Branch '$CURRENT_BRANCH':"
|
|
||||||
BRANCH_STASHES=($(git stash list | grep "On $CURRENT_BRANCH"))
|
|
||||||
|
|
||||||
if [[ ${#BRANCH_STASHES[@]} -eq 0 ]]; then
|
2)
|
||||||
echo "Keine Stashes für diesen Branch vorhanden."
|
# ========== Stash anwenden ==========
|
||||||
exit 0
|
echo "Liste aller Stashes für Branch '$CURRENT_BRANCH':"
|
||||||
fi
|
STASHES=$(git stash list | grep "$CURRENT_BRANCH")
|
||||||
|
|
||||||
i=1
|
if [[ -z "$STASHES" ]]; then
|
||||||
declare -A STASH_MAP
|
echo "Keine Stashes für diesen Branch vorhanden."
|
||||||
while read -r line; do
|
exit 0
|
||||||
STASH_ID=$(echo "$line" | cut -d: -f1)
|
fi
|
||||||
STASH_MSG=$(echo "$line" | cut -d: -f3- | sed 's/^ //')
|
|
||||||
echo "$i) $STASH_ID -> $STASH_MSG"
|
|
||||||
STASH_MAP[$i]=$STASH_ID
|
|
||||||
((i++))
|
|
||||||
done < <(git stash list | grep "On $CURRENT_BRANCH")
|
|
||||||
|
|
||||||
read -p "Gib die Nummer des Stashs ein, den du anwenden möchtest: " STASH_CHOICE
|
i=1
|
||||||
if [[ -z "${STASH_MAP[$STASH_CHOICE]}" ]]; then
|
declare -A STASH_MAP
|
||||||
echo "Ungültige Auswahl!"
|
while IFS= read -r line; do
|
||||||
exit 1
|
STASH_REF=$(echo "$line" | awk -F: '{print $1}')
|
||||||
fi
|
STASH_MSG=$(echo "$line" | cut -d':' -f3- | sed 's/^ //')
|
||||||
|
echo "$i) $STASH_REF -> $STASH_MSG"
|
||||||
|
STASH_MAP[$i]=$STASH_REF
|
||||||
|
((i++))
|
||||||
|
done <<< "$STASHES"
|
||||||
|
|
||||||
git stash apply ${STASH_MAP[$STASH_CHOICE]}
|
read -p "Wähle einen Stash (Nummer): " choice
|
||||||
echo "Stash ${STASH_MAP[$STASH_CHOICE]} angewendet."
|
if [[ -z "${STASH_MAP[$choice]}" ]]; then
|
||||||
;;
|
echo "Ungültige Auswahl!"
|
||||||
3)
|
exit 1
|
||||||
# Stash löschen
|
fi
|
||||||
echo "Liste aller Stashes für Branch '$CURRENT_BRANCH':"
|
|
||||||
i=1
|
|
||||||
declare -A STASH_MAP
|
|
||||||
while read -r line; do
|
|
||||||
STASH_ID=$(echo "$line" | cut -d: -f1)
|
|
||||||
STASH_MSG=$(echo "$line" | cut -d: -f3- | sed 's/^ //')
|
|
||||||
echo "$i) $STASH_ID -> $STASH_MSG"
|
|
||||||
STASH_MAP[$i]=$STASH_ID
|
|
||||||
((i++))
|
|
||||||
done < <(git stash list | grep "On $CURRENT_BRANCH")
|
|
||||||
|
|
||||||
if [[ $i -eq 1 ]]; then
|
SELECTED_STASH=${STASH_MAP[$choice]}
|
||||||
echo "Keine Stashes für diesen Branch vorhanden."
|
echo "Wende Stash an: $SELECTED_STASH"
|
||||||
exit 0
|
git stash apply "$SELECTED_STASH"
|
||||||
fi
|
;;
|
||||||
|
|
||||||
read -p "Gib die Nummer des Stashs ein, den du löschen möchtest: " STASH_CHOICE
|
3)
|
||||||
if [[ -z "${STASH_MAP[$STASH_CHOICE]}" ]]; then
|
# ========== Stash löschen ==========
|
||||||
echo "Ungültige Auswahl!"
|
echo "Liste aller Stashes für Branch '$CURRENT_BRANCH':"
|
||||||
exit 1
|
STASHES=$(git stash list | grep "$CURRENT_BRANCH")
|
||||||
fi
|
|
||||||
|
|
||||||
git stash drop ${STASH_MAP[$STASH_CHOICE]}
|
if [[ -z "$STASHES" ]]; then
|
||||||
echo "Stash ${STASH_MAP[$STASH_CHOICE]} gelöscht."
|
echo "Keine Stashes für diesen Branch vorhanden."
|
||||||
;;
|
exit 0
|
||||||
*)
|
fi
|
||||||
echo "Ungültige Option!"
|
|
||||||
exit 1
|
i=1
|
||||||
;;
|
declare -A STASH_MAP
|
||||||
|
while IFS= read -r line; do
|
||||||
|
STASH_REF=$(echo "$line" | awk -F: '{print $1}')
|
||||||
|
STASH_MSG=$(echo "$line" | cut -d':' -f3- | sed 's/^ //')
|
||||||
|
echo "$i) $STASH_REF -> $STASH_MSG"
|
||||||
|
STASH_MAP[$i]=$STASH_REF
|
||||||
|
((i++))
|
||||||
|
done <<< "$STASHES"
|
||||||
|
|
||||||
|
read -p "Wähle einen Stash zum Löschen (Nummer): " choice
|
||||||
|
if [[ -z "${STASH_MAP[$choice]}" ]]; then
|
||||||
|
echo "Ungültige Auswahl!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SELECTED_STASH=${STASH_MAP[$choice]}
|
||||||
|
echo "Lösche Stash: $SELECTED_STASH"
|
||||||
|
git stash drop "$SELECTED_STASH"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Ungültige Auswahl!"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Reference in New Issue
Block a user