37 lines
1008 B
Bash
37 lines
1008 B
Bash
#!/usr/bin/env bash
|
||
# git-switch.sh – Branch wechseln oder erstellen, remote aktualisieren
|
||
#
|
||
# Verwendung:
|
||
# bash .claude/scripts/git-switch.sh <branch> – wechseln (pull wenn vorhanden)
|
||
# bash .claude/scripts/git-switch.sh <branch> create – neu aus aktuellem Branch
|
||
# bash .claude/scripts/git-switch.sh <branch> from <base> – neu aus <base>
|
||
|
||
set -euo pipefail
|
||
|
||
BRANCH="${1:?'Branch-Name fehlt'}"
|
||
MODE="${2:-switch}"
|
||
BASE="${3:-}"
|
||
|
||
ROOT="$(git rev-parse --show-toplevel)"
|
||
cd "$ROOT"
|
||
|
||
case "$MODE" in
|
||
switch)
|
||
git fetch origin "$BRANCH" 2>/dev/null || true
|
||
git checkout "$BRANCH" 2>/dev/null || git checkout -b "$BRANCH"
|
||
git pull origin "$BRANCH" 2>/dev/null || true
|
||
;;
|
||
create)
|
||
git checkout -b "$BRANCH"
|
||
git push -u origin "$BRANCH"
|
||
;;
|
||
from)
|
||
BASE="${3:?'Basis-Branch fehlt'}"
|
||
git fetch origin "$BASE"
|
||
git checkout -b "$BRANCH" "origin/$BASE"
|
||
git push -u origin "$BRANCH"
|
||
;;
|
||
esac
|
||
|
||
echo "Aktiver Branch: $(git branch --show-current)"
|