Git-Branch umbenennen: lokal, remote und GitHub-Standard | We.Inc
Erzeuge die genauen Befehle, um einen Git-Branch lokal umzubenennen, den neuen Namen zu pushen, den alten Remote-Branch zu löschen und das Upstream-Tracking zu reparieren, dazu das Umbenennen von main auf GitHub.
Um den Branch umzubenennen, auf dem du gerade bist, führst du git branch -m new-name aus. Für einen anderen Branch führst du git branch -m old-name new-name aus. Git kann einen Branch auf einem Remote nicht umbenennen, also pushst du den neuen Namen mit git push -u origin new-name und löschst dann den alten mit git push origin --delete old-name.
Umbenennungsbefehle je nach Situation
Situation
Befehl
Den aktuellen Branch umbenennen
git branch -m new-name
Einen anderen Branch umbenennen
git branch -m old-name new-name
Einen bestehenden Namen überschreiben
git branch -M old-name new-name
Den neuen Namen veröffentlichen und tracken
git push -u origin new-name
Den alten Namen vom Remote entfernen
git push origin --delete old-name
Einen Klon reparieren, nachdem jemand anderes umbenannt hat
git branch -u origin/new-name new-name
Lokal umbenennen ist ein einziger Befehl; beim Remote bleiben die meisten hängen, denn ein Remote-Branch lässt sich nicht an Ort und Stelle umbenennen, nur ersetzen. Trag unten den alten und den neuen Namen ein, um die Befehle für deinen Fall zu erhalten, einschließlich dessen, was Teammitglieder danach ausführen müssen, und der zusätzlichen Schritte, wenn der Branch der GitHub-Standard ist.
Gib den alten Namen, den neuen Namen und das Remote ein, meist origin.
Hake an, ob du auf diesem Branch bist und ob er schon auf dem Remote existiert.
Führe die Befehle der Reihe nach aus; der Builder ergänzt Push, Löschen und Upstream-Reparatur nur, wenn sie zutreffen.
Schick den Block für Teammitglieder an alle anderen, die einen Klon haben.
Pushe den neuen Namen, bevor du den alten löschst, damit ein offener Pull Request oder ein CI-Lauf den Branch nie ganz verschwinden sieht.
Auf GitHub ist das Umbenennen über die Branches-Seite bei geteilten Branches besser: Es richtet offene Pull Requests neu aus und leitet alte URLs für dich weiter.
Durchsuche deine CI-Workflows, Deploy-Einstellungen und Skripte nach dem alten Namen. Laut GitHub werden Actions-Workflows, die ihn verwenden, nicht aktualisiert.
git branch -m benennt auch das Reflog des Branches um, sodass seine lokale Bewegungshistorie dem neuen Namen folgt.
Häufige Fragen
Kann ich einen Remote-Branch direkt umbenennen?
Mit reinem Git nicht. Du pushst den Branch unter dem neuen Namen und löschst den alten. Die Weboberfläche von GitHub kann einen Branch auf dem Server umbenennen, wodurch auch Pull Requests und Links weiter funktionieren.
Was ist der Unterschied zwischen -m und -M?
-m bricht ab, wenn bereits ein Branch mit dem neuen Namen existiert. -M ist die Kurzform von --move --force und ersetzt ihn. Keiner von beiden benennt einen Branch um, der in einem anderen Worktree desselben Repositorys ausgecheckt ist.
Wie benenne ich master auf GitHub in main um?
Öffne im Repository auf GitHub die Branches, wähle bei master Umbenennen und tippe main ein. Für das Umbenennen des Standard-Branches brauchst du Admin-Rechte. Danach führen alle die vier Befehle aus, die GitHub anzeigt: lokal umbenennen, fetch, Upstream setzen und den HEAD von origin aktualisieren.
Warum geht git push immer noch an den alten Branch-Namen?
Der umbenannte Branch trackt noch den alten Upstream. Pushe einmal mit -u oder führe git branch -u origin/new-name aus, dann nutzen spätere Pushes und Pulls den neuen Namen.
Was GitHub aktualisiert, wenn du dort umbenennst
GitHub leitet Web-URLs mit dem alten Namen weiter, überträgt den Branch-Schutz auf den neuen Namen und richtet offene Pull Requests und Release-Entwürfe, die darauf basieren, neu aus. Raw-Datei-URLs werden nicht weitergeleitet.
Nutzer mit Schreibrechten können gewöhnliche Branches umbenennen; für den Standard-Branch oder einen geschützten Branch braucht es Admin-Rechte, und Rulesets der Organisation können das weiter einschränken.
Namen vermeiden, die später Probleme machen
Bleib bei Kleinbuchstaben, Ziffern, Bindestrichen und Schrägstrichen zur Gruppierung, etwa fix/login-timeout. Git lehnt Namen mit Leerzeichen, zwei Punkten hintereinander, einem Punkt oder Schrägstrich am Ende, einem Bindestrich am Anfang oder einem der Zeichen ~ ^ : ? * [ und Backslash ab.
Komplette Umbenennung von Anfang bis Ende
Einen gepushten Branch überall umbenennen
Benennt lokal um, veröffentlicht den neuen Namen mit Tracking und entfernt dann den alten Remote-Branch.
Was Teammitglieder nach einer Umbenennung auf GitHub ausführen
Das sind die Schritte, die GitHub zum Aktualisieren eines bestehenden Klons nennt, mit dem optionalen Aufräumen veralteter Remote-Branches.
Builder für Umbenennungsbefehle
Aktueller Branch-Name
Neuer Branch-Name
Remote
Ich bin gerade auf diesem Branch
Der Branch existiert auf dem Remote
Deine Befehle
Teammitglieder führen aus
Teammitgliedern ist nichts mitzuteilen: Der Branch wurde nie gepusht.
Das ist kein gültiger Branch-Name. Sieh dir die Namensregeln weiter unten auf der Seite an.