58 lines
1.8 KiB
Bash
Executable File
58 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
|
||
set -e # wychodzi przy pierwszym błędzie
|
||
|
||
echo "======================================"
|
||
echo " git-sync – pełna synchronizacja + merge + push"
|
||
echo "======================================"
|
||
|
||
CURRENT=$(git rev-parse --abbrev-ref HEAD)
|
||
|
||
if [ "$CURRENT" = "main" ] || [ "$CURRENT" = "HEAD" ]; then
|
||
echo "Błąd: jesteś na main lub w detached HEAD."
|
||
echo "Najpierw przejdź na swoją gałąź roboczą."
|
||
exit 1
|
||
fi
|
||
|
||
echo "Twoja gałąź: $CURRENT"
|
||
|
||
# 1. Aktualizacja origin (wszystkie branche)
|
||
git fetch origin
|
||
|
||
# 2. Przechodzimy na main i aktualizujemy go z serwera
|
||
echo "→ Aktualizuję main z origin..."
|
||
git checkout main
|
||
git pull --ff-only origin main # --ff-only = nie pozwala na merge jeśli nie jest fast-forward
|
||
|
||
# 3. Wracamy na gałąź roboczą
|
||
git checkout "$CURRENT"
|
||
|
||
# 4. Merge main → nasza gałąź (żeby nie mieć konfliktów przy mergu w drugą stronę)
|
||
echo "→ Merge main → $CURRENT (aktualizacja feature z main)..."
|
||
git merge main
|
||
|
||
# 5. Teraz merge nasza gałąź → main
|
||
echo "→ Merge $CURRENT → main lokalnie..."
|
||
git checkout main
|
||
git merge "$CURRENT" --no-edit # --no-edit = bez edytowania komunikatu merge
|
||
|
||
# 6. Push main na serwer
|
||
echo "→ Wrzucam zaktualizowany main na serwer..."
|
||
git push origin main
|
||
|
||
# 7. Opcjonalnie: wracamy na gałąź roboczą
|
||
git checkout "$CURRENT"
|
||
|
||
# 8. Czyszczenie starych zmergowanych gałęzi (opcjonalne)
|
||
git fetch --prune
|
||
git branch --merged main | grep -v '^ *main$' | xargs git branch -d 2>/dev/null || true
|
||
|
||
echo ""
|
||
echo "======================================"
|
||
echo "✅ Zrobione:"
|
||
echo "• main zaktualizowany z serwera"
|
||
echo "• $CURRENT zmergowany do main"
|
||
echo "• main wypushowany na serwer"
|
||
echo "Jesteś teraz na: $CURRENT"
|
||
echo "======================================"
|
||
git checkout main |