#!/usr/bin/env bash echo "===== TWORZENIE NOWEJ GAŁĘZI =====" # ──────────────────────────────────────────────── # Najpierw zbieramy wszystkie odpowiedzi od użytkownika # ──────────────────────────────────────────────── echo "" echo "Jakiego typu zmiana?" echo " 1 = fix (poprawka błędu)" echo " 2 = feat (nowa funkcjonalność)" echo " 3 = refactor (poprawa kodu bez zmiany zachowania)" echo " 4 = docs (dokumentacja)" echo " 5 = inne (wpisz własną prefiksa)" echo -n "Wybierz numer (Enter = fix): " read -r choice case "$choice" in 1|"") PREFIX="fix" ;; 2) PREFIX="feat" ;; 3) PREFIX="refactor" ;; 4) PREFIX="docs" ;; 5) echo -n "Wpisz własny prefix (np. chore, test, style): " read -r PREFIX ;; *) PREFIX="$choice" ;; esac echo -n "Krótki opis zmiany (bez spacji, myślniki zamiast spacji): " read -r DESC if [ -z "$DESC" ]; then echo "❌ Opis nie może być pusty!" exit 1 fi # Czyszczenie opisu DESC=$(echo "$DESC" | tr '[:upper:]' '[:lower:]' | tr -s ' ' '-' | tr -cd '[:alnum:]-') PROPOSED_BRANCH="${PREFIX}-${DESC}" echo "" echo "Proponowana nazwa gałęzi: ${PROPOSED_BRANCH}" echo -n "Zatwierdzasz? [T/n]: " read -r confirm if [[ "$confirm" =~ ^[Nn]$ ]]; then echo -n "Wpisz własną nazwę gałęzi: " read -r BRANCH if [ -z "$BRANCH" ]; then echo "❌ Anulowano." exit 1 fi else BRANCH="${PROPOSED_BRANCH}" fi # ──────────────────────────────────────────────── # Teraz dopiero zaczynamy operacje git # ──────────────────────────────────────────────── echo "" echo "Przygotowuję main..." # Zapisujemy ewentualne niezacommitowane zmiany echo "→ Zapisuję bieżące niezacommitowane zmiany (stash)..." git stash push -m "automatyczny stash przed git-start $(date '+%Y-%m-%d %H:%M')" || true # Przełączamy się na main git checkout main 2>/dev/null || { echo "❌ Nie udało się przełączyć na main"; exit 1; } # Aktualizujemy main echo "→ Pobieram najnowszy main..." git pull origin main if [ $? -ne 0 ]; then echo "❌ Błąd podczas git pull. Sprawdź połączenie / uprawnienia." # Przywracamy stash jeśli był git stash pop || true exit 1 fi # Przywracamy ewentualne zmiany użytkownika na czystym mainie echo "→ Przywracam Twoje zmiany (jeśli były schowane)..." git stash pop || echo "Nie było schowanych zmian – OK" # Tworzymy nową gałąź echo "→ Tworzę gałąź: $BRANCH" git checkout -b "$BRANCH" if [ $? -ne 0 ]; then echo "❌ Błąd – gałąź $BRANCH prawdopodobnie już istnieje." git branch # Przywracamy stan sprzed próby (opcjonalnie) git checkout main exit 1 fi echo "" echo "✅ Jesteś teraz na gałęzi: $BRANCH" echo "Po skończeniu pracy uruchom: ./git-done.sh"