git switch

Branches & Merges

Wechselt den Branch


Der Befehl 'git switch' bringt dich auf einen anderen Branch: HEAD folgt ihm und deine Arbeitsdateien passen sich diesem Branch an. Mit -c wird der Branch zuerst erstellt. Er kam mit Git 2.23, um den Branch-Wechsel von git checkout zu übernehmen, mit klareren Namen und sichereren Voreinstellungen — er verweigert den Wechsel, wenn dabei nicht committete Änderungen überschrieben würden.

Syntax

git switch [<options>] <branch>
git switch [<options>] (-c|-C) <new-branch> [<start-point>]
git switch [<options>] --detach [<start-point>]
git switch [<options>] --orphan <new-branch>
[ ] optional| oder<arg> Platzhalter... wiederholbar--flag Option

Optionen

Klicke auf eine Option, um sie aufzuklappen

Einsteiger (2)

Erstellt einen neuen Branch auf dem aktuellen Commit (oder einem angegebenen Startpunkt) und wechselt dorthin.

EmpfohlenErstellen und wechseln in einem Schritt

Beispiel

git switch -c feature/login

Wechselt auch, wenn dabei nicht committete Änderungen überschrieben werden; diese gehen verloren.

Nicht empfohlenLöscht nicht committete Änderungen stillschweigend; besser stashen

Beispiel

git switch --discard-changes main

Fortgeschritten (2)

Wie -c, aber existiert der Branch schon, wird er auf den Startpunkt zurückgesetzt.

Bei BedarfSetzt einen bestehenden Branch zurück — seine alten Commits fallen weg

Beispiel

git switch -C feature/login

Wechselt zu einem Commit statt zu einem Branch (losgelöster HEAD), z. B. um eine alte Version anzusehen.

Bei BedarfEinen alten Commit ansehen, ohne einen Branch zu bewegen

Beispiel

git switch --detach HEAD~1

Erfahren (1)

Erstellt einen neuen Branch ohne Historie und entfernt die verfolgten Dateien von der Platte.

Bei BedarfGetrennte Historie, z. B. ein gh-pages-Branch

Beispiel

git switch --orphan docs

Die richtige Option wählen

switch oder checkout

Dieselben Branch-Aktionen, alt und neu

BefehlEntsprechung mit git checkout
git switch maingit checkout main
git switch -c feature/logingit checkout -b feature/login
git switch --detach HEAD~1git checkout HEAD~1
git switch -git checkout -

Beispiele

Zu einem Branch wechseln

git switch main

Zu main wechseln.


Erstellen und wechseln

git switch -c feature/login

feature/login erstellen und dorthin wechseln.


Vorheriger Branch

git switch -

Zurück zu dem Branch, auf dem du vorher warst.


Einem Remote-Branch folgen

git switch feature/login

Existiert nur origin/feature/login, wird ein lokaler Branch angelegt, der ihm folgt.

Workflow-Beispiele

1
git switch main

Bei main anfangen

2
git pull

Das neueste main holen

3
git switch -c feature/login

Deinen Branch erstellen

1
git stash

Die Änderungen parken

2
git switch main

Wechseln

3
git switch - && git stash pop

Zurückkommen und die Änderungen wiederherstellen

Fehlerbehebung

error: Your local changes to the following files would be overwritten by checkout

Ursache: Eine nicht committete Änderung kollidiert mit dem anderen Branch

Committe oder stashe sie zuerst, oder verwirf sie mit --discard-changes

fatal: invalid reference: feature/x

Ursache: Der Branch existiert nicht

Erstelle ihn mit git switch -c, oder führe git fetch aus, falls er auf origin existiert

fatal: a branch is expected, got commit

Ursache: Du hast einen Commit angegeben, keinen Branch

Nutze git switch --detach <commit>

Tipps & Stolperfallen

Best Practices

  • ✓Nutze git switch für Branches und git restore für Dateien statt git checkout.
  • ✓Halte den Status sauber (Commit oder Stash), bevor du wechselst.
  • ✓Pulle main, bevor du davon einen neuen Branch erstellst.

Häufige Fehler

  • ✗Mit nicht committeten Änderungen wechseln und überrascht sein, dass sie mit auf den neuen Branch kommen.
  • ✗git switch <commit> nutzen — Commits brauchen --detach.
  • ✗-c vergessen und "invalid reference" für einen Branch bekommen, den es noch nicht gibt.

FAQ

A:

Für Branches macht es dasselbe, aber mit klareren Optionen, und es kann nicht versehentlich Dateien verändern.

A:

Git 2.23 oder neuer.

A:

Sie kommen mit auf den neuen Branch, außer es gibt einen Konflikt — dann wird der Wechsel verweigert.