Wie benenne ich einen lokalen Git-Zweig um?


Antworten:


13734

Wenn Sie einen Zweig umbenennen möchten, während Sie auf einen Zweig zeigen, gehen Sie wie folgt vor:

git branch -m <oldname> <newname>

Wenn Sie den aktuellen Zweig umbenennen möchten, haben Sie folgende Möglichkeiten:

git branch -m <newname>

Eine Möglichkeit, sich daran zu erinnern, ist -m"Verschieben" (oder mv), mit dem Sie Dateien umbenennen. Das Hinzufügen eines Alias ​​könnte ebenfalls hilfreich sein. Führen Sie dazu Folgendes aus:

git config --global alias.rename 'branch -m'

Wenn Sie unter Windows oder einem anderen Dateisystem arbeiten, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, und der Name nur durch Groß- und Kleinschreibung geändert wird, müssen Sie ihn verwenden -M. Andernfalls löst git einen bereits vorhandenen Verzweigungsfehler aus :

git branch -M <newname>

87
Was ich wirklich wissen wollte war, ob dies notwendigerweise die entfernte Verzweigung beeinflusst, wenn / wenn Sie drücken
PandaWood

181
@PandaWood: Es wird der neue Zweig hinzugefügt, wenn Sie pushen, aber der alte Zweig wird nicht gelöscht. Wenn Sie verwenden git push -f --mirror, wird der Zweig auf der Fernbedienung umbenannt. Sie sollten diese Methode jedoch nur verwenden, wenn die Fernbedienung lediglich eine Kopie Ihres aktuellen Repositorys sein soll. Siehe auch diese Frage: stackoverflow.com/questions/1526794/git-rename-remote-branch
siride

19
@PandaWood, es hängt davon ab, wie push.defaultkonfiguriert ist. Standardmäßig ( matching) wird auf eine Fernbedienung übertragen, deren Name übereinstimmt. Sie müssten dies tun, git push origin <newname>:<oldname>oder Sie erstellen einen neuen Remote-Zweig. Wenn dies push.defaultjedoch eingestellt ist upstream, können Sie push origin headund der alte Name wird auf der Fernbedienung angezeigt.
Erin Stanfill

13
@ NightOwl888: -m steht wahrscheinlich für "move" und folgt der Unix-Konvention, mit der mvDateien umbenannt werden. Der Grund dafür ist, dass das Verschieben und Umbenennen in einem verzeichnisbasierten Inode-Dateisystem völlig gleichwertig ist.
Siride

51
Der lange Name der -mOption lautet --movez. B. git branch --move masterBenennt den aktuellen Zweig in "Master" um.
Robenkleene

445
git branch -m old_branch_name new_branch_name

Der obige Befehl ändert Ihren Zweigstellennamen, aber Sie müssen sehr vorsichtig sein, wenn Sie den umbenannten Zweig verwenden, da er weiterhin auf den alten Upstream-Zweig verweist, der ihm zugeordnet ist, falls vorhanden.

Wenn Sie einige Änderungen in den Master übertragen möchten, nachdem Ihr lokaler Zweig in new_branch_name (Beispielname) umbenannt wurde:

git push origin new_branch_name:master (Jetzt werden die Änderungen in den Hauptzweig übernommen, aber Ihr lokaler Zweigstellenname lautet new_branch_name.)

Weitere Informationen finden Sie unter " So benennen Sie Ihren lokalen Zweigstellennamen in Git um ."


326

So benennen Sie Ihren aktuellen Zweig um:

git branch -m <newname>

159
Sie müssen -M zum Umbenennen verwenden, wenn Sie nur die Großschreibung ändern, da git Ihnen mitteilt, dass der Zweig bereits vorhanden ist.
cjspurgeon

289

Hier sind die Schritte zum Umbenennen des Zweigs:

  1. Wechseln Sie zu dem Zweig, der umbenannt werden muss
  2. git branch -m <new_name>
  3. git push origin :<old_name>
  4. git push origin <new_name>:refs/heads/<new_name>

BEARBEITEN (01.12.2017): Stellen Sie sicher, dass Sie den Befehl ausführen git statusund überprüfen, ob der neu erstellte Zweig auf seine eigene Referenz zeigt und nicht auf die ältere. Wenn Sie den Verweis auf den älteren Zweig finden, müssen Sie den Upstream deaktivieren, indem Sie:

git branch --unset-upstream

1
In welchem ​​Schritt würde man den Upstream deaktivieren? Vor Schritt 4?
Cyclonecode

1
Dies ist die beste Antwort hier, da sie den gesamten Prozess zum korrekten Abschließen einer Umbenennung beschreibt
Chris Halcrow

212

Das Umbenennen des Zweigs ist hilfreich, sobald Ihr Zweig fertig ist. Dann kommt neues Material, und Sie möchten im selben Zweig entwickeln, anstatt es zu löschen und das neue zu erstellen.

Nach meiner Erfahrung sollten Sie die folgenden Schritte ausführen, um einen lokalen und Remote-Zweig in Git umzubenennen.

Zitieren aus mehreren Zuständen - Benennen Sie einen lokalen und einen Remote-Zweig in git um

1. Benennen Sie Ihre lokale Niederlassung um

Wenn Sie sich in der Filiale befinden, die Sie umbenennen möchten:

git branch -m new-name

Wenn Sie sich in einem anderen Zweig befinden:

git branch -m old-name new-name

2. Löschen Sie den Remote-Zweig mit dem alten Namen und drücken Sie den lokalen Zweig mit dem neuen Namen

git push origin :old-name new-name

3. Setzen Sie den Upstream-Zweig für den lokalen Zweig mit dem neuen Namen zurück

git push origin -u new-name

1
Dieser hat besser für mich funktioniert. Hier gaben mir die 2 Schritte die folgenden Fehler:error: dst ref refs/heads/<old-name> receives from more than one src.; error: failed to push some refs to 'git@uri:foo/bar.git'
Anto

1
Sie haben das Problem beim Ausführen des Befehls git push origin :old-name new-namerichtig?
Trungk18

Ja genau (sorry ich meinte "2. Schritt", nicht "2 Schritte" - müde)
Anto

116

Die Antworten waren bisher richtig, aber hier sind einige zusätzliche Informationen:

Man kann einen Zweig sicher mit '-m' (move) umbenennen, aber man muss mit '-M' vorsichtig sein, da er das Umbenennen erzwingt, selbst wenn bereits ein Zweig mit demselben Namen vorhanden ist. Hier ist der Auszug aus der Manpage 'git-branch':

Mit der Option -m oder -M <oldbranch>wird in umbenannt <newbranch>. Wenn <oldbranch>ein entsprechendes Reflog vorhanden ist, wird es entsprechend umbenannt <newbranch>und ein Reflog-Eintrag erstellt, um die Umbenennung des Zweigs zu speichern. Wenn <newbranch>vorhanden, muss -M verwendet werden, um die Umbenennung zu erzwingen.


2
Was passiert mit dem überschriebenen Zweig?
Kevin Dice

Es wird durch den neuen Namen / Zweig überschrieben. Wenn Sie beispielsweise die folgenden Zweige in git haben: master b1 <- aktueller Zweig b2, nachdem Sie 'git branch -M b2' ausgeführt haben, haben Sie nur: master b2 <- der aktuelle Zweig b1 ist verschwunden und wenn Sie möchten Stellen Sie es wieder her. Sie sollten es anhand seines Hashs überprüfen. Sie können es sehen, indem Sie 'git reflog' eingeben. Prost.
Vanchev

Die -MFlagge ist auch nützlich , um eine Umbenennungs zu erzwingen , wenn Sie nur den Fall des Zweignamen zu korrigieren, zB Wechsel myBranchzu MyBranch. (Mit -m, Git kehrt zurück fatal: A branch named 'MyBranch' already exists.)
Jon Schneider

92

1. Umbenennen

Wenn es Ihre aktuelle Niederlassung ist, tun Sie es einfach

git branch -m new_name

Wenn es sich um einen anderen Zweig handelt, den Sie umbenennen möchten

git branch -m old_name new_name

2. Verfolgen Sie einen neuen Remote-Zweig

- Wenn Ihr Zweig gepusht wurde, müssen Sie ihn nach dem Umbenennen aus dem Remote-Git-Repository löschen und Ihren neuen lokalen Benutzer bitten, einen neuen Remote-Zweig zu verfolgen:

git push origin :old_name
git push --set-upstream origin new_name

74

Ich habe dummerweise einen Zweig benannt, der mit einem Bindestrich beginnt, und dann den Master ausgecheckt. Ich wollte nicht löschen meinen Zweig , ich hatte Arbeit darin.

Keines davon funktionierte:

git checkout -dumb-name

git checkout -- -dumb-name

"s, 's und \s haben auch nicht geholfen. git branch -mfunktioniert nicht

Hier ist, wie ich es endlich behoben habe. Gehen Sie in die .git / refs / Heads Ihrer Arbeitskopie, suchen Sie den Dateinamen "-dumb-name" und holen Sie sich den Hash des Zweigs. Dann wird dies überprüft, ein neuer Zweig mit einem vernünftigen Namen erstellt und der alte gelöscht.

git checkout {hash}
git checkout -b brilliant-name
git branch -d -- -dumb-name

8
Könnten Sie die Datei nicht einfach in Refs / Heads umbenennen?
android.weasel

Das Gleiche gilt. Wenn Sie sich in die Verzeichnisstruktur vertiefen müssen, um diese Magie auszuführen, gehen Sie den ganzen Weg und führen Sie einen 'mv - -dumb-name brillant-name' aus. Führen Sie einen 'git branch -av' aus, und Sie sehen eine Verzeichnisstruktur von .git / refs. Oder vielleicht 'grep -R ^ .git / refs', um die Hashes direkt zu sehen.
Dave X

2
Sie könnten wahrscheinlich verwendet habenreflog
Code Whisperer

Ehrlich gesagt, wenn dies der Weg ist, den Sie einschlagen wollten, würde ich den (IMO verwirrend und potenziell gefährlich, wenn Sie nicht wissen, was Sie tun) zunächst durch das .git-Verzeichnis springen und es einfach mit einigen tun normale Befehle mit etwas "Git Log" -Parsing (Verwenden geeigneter Flags, um Zweige anzuzeigen und herauszufinden, von welchem ​​Shasum Sie einen neuen Zweig auschecken möchten) und dann ausführen. Entfernen Sie dann den Zweig mit dem Wonky-Namen. Ich verachte dass Git darauf besteht, dass Sie alle seine inneren Funktionen verstehen müssen, um einige Dinge zu tun, aber ich schätze es sehr, dass Sie diese Dinge tun können .
Jon V

Es ist schwieriger, in 2.10.1+ einen Zweig mit einem schlechten Namen zu erstellen. Wenn Sie es irgendwie tun, können Sie git branch -v verwenden, um die kurze Hash-Version Ihrer Zweige abzurufen (fügen Sie -r für remote hinzu). Sie können dann git rev-parse <shorthash> verwenden, um den vollständigen Hash zu erhalten, wenn Sie ihn benötigen.
House of Dexter

67

So benennen Sie einen Zweig lokal um:

git branch -m [old-branch] [new-branch]

Jetzt müssen Sie diese Änderungen auch auf Ihrem Remote-Server weitergeben.

So verschieben Sie Änderungen des gelöschten alten Zweigs:

git push origin :[old-branch]

So ändern Sie Änderungen bei der Erstellung eines neuen Zweigs:

git push origin [new-branch]

57

Nur drei Schritte, um die Namensänderung sowohl auf remoteals auch auf GitHub zu replizieren :

Schritt 1 git branch -m old_branchname new_branchname

Schritt 2 git push origin :old_branchname new_branchname

Schritt 3 git push --set-upstream origin new_branchname


2
Ich musste noch eine zusätzliche Sache tun: git push --set-upstream origin new_branchnamedie in @Nomade Antwort erwähnt wird
IbrahimShendy

2
Schritt 3 nicht erforderlich. Nach Schritt 2 war alles auf dem neuesten Stand.
Dev

@ Dev nicht in allen Fällen Dev, ich musste vor kurzem aktualisieren, da mit Bitbucket und Codecommit, Schritt 3 ist notwendig
Harry_pb

40

Benennen Sie den Zweig mit diesem Befehl um:

git branch -m [old_branch_name] [new_branch_name]

-m: Der Zweig wird umbenannt / verschoben. Wenn bereits eine Verzweigung vorhanden ist, wird eine Fehlermeldung angezeigt.

Wenn bereits ein Zweig vorhanden ist und Sie diesen Zweig umbenennen möchten, verwenden Sie:

 git rename -M [old_branch_name] [new_branch_name]

Verwenden Sie diesen Befehl im Terminal, um weitere Informationen zur Hilfe zu erhalten:

git branch --help

oder

man git branch

40

Fortgeschrittene Git-Benutzer können manuell umbenennen, indem sie:

Rename the old branch under .git/refs/heads to the new name

Rename the old branch under .git/logs/refs/heads to the new name

Update the .git/HEAD to point to yout new branch name

34
  1. Benennen Sie Ihre lokale Niederlassung um.

Wenn Sie sich in der Filiale befinden, die Sie umbenennen möchten:

git branch -m new-name

Wenn Sie sich in einem anderen Zweig befinden:

git branch -m old-name new-name
  1. Löschen Sie den Remote-Zweig mit dem alten Namen und drücken Sie den lokalen Zweig mit dem neuen Namen.

git push origin :old-name new-name

  1. Setzen Sie den Upstream-Zweig für den lokalen Zweig mit dem neuen Namen zurück. Wechseln Sie in die Filiale und dann:

git push origin -u new-name

Oder für einen schnellen Weg, dies zu tun, können Sie diese 3 Schritte verwenden:

# Zweig lokal umbenennen

git branch -m old_branch new_branch  

# Löschen Sie den alten Remote-Zweig

git push origin :old_branch  

# Drücken Sie auf den neuen Zweig und stellen Sie den lokalen Zweig so ein, dass die neue Fernbedienung verfolgt wird

git push --set-upstream origin new_branch   

Referenz: https://www.w3docs.com/snippets/git/how-to-rename-git-local-and-remote-branches.html


das funktioniert bei mir
Vazgen Manukyan

26

Hier sind drei Schritte: Ein Befehl, den Sie in Ihrem Terminal aufrufen und den Filialnamen ändern können.

git branch -m old_branch new_branch         # Rename branch locally
git push origin :old_branch                 # Delete the old branch
git push --set-upstream origin new_branch   # Push the new branch, set local branch to track the new remote

Wenn Sie mehr benötigen: Schritt für Schritt, So ändern Sie den Git-Zweignamen ein guter Artikel dazu.


25

Wahrscheinlich wird dies, wie von anderen erwähnt, bei der Benennung von Zweigen nicht übereinstimmen.

Wenn Sie eine solche Situation haben, kann ich davon ausgehen, dass Sie unter Windows arbeiten, was Sie auch zu folgenden Ergebnissen führt:

$ git branch -m CaseSensitive casesensitive
fatal: A branch named 'casesensitive' already exists.

Dann müssen Sie einen Zwischenschritt machen:

$ git branch -m temporary
$ git branch -m casesensitive

Nichts mehr.


1
Beachten Sie, dass diese Situation auch auf einem Mac auftreten kann, das ist auch (ausnahmsweise annoyingly) Groß- und Kleinschreibung in seinem Dateisystem.
Jon V

Alternativ können Sie diese Art der "Umgehung des Gehäuses" in einem einzigen Schritt verwenden, -Manstatt sie -mumzubenennen.
Jon Schneider

23

Der Versuch, speziell auf die Frage zu antworten (zumindest den Titel).

Sie können den lokalen Zweig auch umbenennen , verfolgen jedoch weiterhin den alten Namen auf der Fernbedienung.

git branch -m old_branch new_branch
git push --set-upstream origin new_branch:old_branch

Wenn Sie jetzt ausführen git push, wird die Remote- old_branchReferenz mit Ihrem lokalen aktualisiertnew_branch .

Sie müssen diese Konfiguration kennen und sich daran erinnern . Aber es kann nützlich sein, wenn Sie nicht die Wahl für den Namen der Gegenstelle haben, aber es Ihnen nicht gefällt (oh, ich meine, Sie haben eine sehr gute Grund, ihn nicht zu mögen!) Und einen klareren bevorzugen Name für Ihre lokale Niederlassung.

Wenn Sie mit der Abrufkonfiguration spielen, können Sie sogar die lokale Fernreferenz umbenennen. dh ein mit refs/remote/origin/new_branchref Zeiger auf den Zweig, ist diese Tatsache in dem old_branchauf origin. Ich rate jedoch dringend davon ab, um die Sicherheit Ihres Geistes zu gewährleisten.


22

Zweig lokal ändern ist ganz einfach ...

Wenn Sie sich in der Filiale befinden, für die Sie den Namen ändern möchten, gehen Sie einfach folgendermaßen vor:

git branch -m my_new_branch

Andernfalls, wenn Sie sich befinden masteroder andere Zweig andere als die , wenn Sie möchten , den Namen ändern, einfach tun:

git branch -m my_old_branch my_new_branch

Außerdem erstelle ich das folgende Bild, um dies in einer Befehlszeile in Aktion zu zeigen . In diesem Fall befinden Sie sich in einer masterVerzweigung, zum Beispiel:

Ändern Sie den Filialnamen lokal


21

Wenn Sie bereit sind, SourceTree zu verwenden (was ich dringend empfehle), können Sie mit der rechten Maustaste auf Ihren Zweig klicken und "Umbenennen" auswählen.

Geben Sie hier die Bildbeschreibung ein


20

Um den aktuellen Zweig umzubenennen (mit Ausnahme des getrennten HEAD-Status), können Sie auch diesen Alias ​​verwenden:

[alias]
    mvh = !sh -c 'git branch -m `git rev-parse --abbrev-ref HEAD` $1'

18

Eine andere Möglichkeit besteht darin, die Befehlszeile überhaupt nicht zu verwenden. Git-GUI-Clients wie SourceTree nehmen einen Großteil der syntaktischen Lernkurve / des Schmerzes weg, die dazu führen, dass Fragen wie diese zu den am häufigsten bei Stack Overflow angezeigten gehören.

Klicken Sie in SourceTree mit der rechten Maustaste auf einen lokalen Zweig im Bereich "Zweige" links und wählen Sie "Umbenennen ...".


5
Ich würde es nicht Schmerz nennen. Der Befehl git ist sehr einfach zu verwenden. Sobald Sie diese Antwort gesehen haben, werden Sie wahrscheinlich nie wieder zurückkehren. Das Problem ist eher, dass die Dokumentation der Git-Befehlszeile anscheinend nicht intuitiv genug ist.
Nearoo

1
Stimmt, aber mit SourceTree muss ich mir kaum Gedanken über die Überprüfung der Dokumentation machen. Alles ist im Allgemeinen intuitiv - klicken Sie einfach mit der rechten Maustaste und sehen Sie, welche Optionen verfügbar sind. (Übrigens bin ich in keiner Weise mit ihnen verbunden - genau wie das Tool!)
Steve Chambers

17

Ein einfacher Weg, dies zu tun:

git branch -m old_branch new_branch         # Rename branch locally
git push origin :old_branch                 # Delete the old branch
git push --set-upstream origin new_branch   # Push the new branch, set local branch to track the new remote

Weitere Informationen finden Sie hier .


15

Da Sie den Zweig nicht auf einen Remote-Server übertragen möchten, ist dieses Beispiel hilfreich:

Angenommen, Sie haben einen vorhandenen Zweig mit dem Namen "my-hot-feature" und möchten ihn in "feature-15" umbenennen.

Zunächst möchten Sie Ihre lokale Niederlassung ändern. Einfacher geht es nicht:

git branch -m my-hot-feature feature-15

Weitere Informationen finden Sie unter Lokales und Remote-Umbenennen eines Zweigs in Git .


13

Git Version 2.9.2

Wenn Sie den Namen der lokalen Niederlassung ändern möchten, in der Sie sich befinden:

git branch -m new_name

Wenn Sie den Namen eines anderen Zweigs ändern möchten:

git branch -m old_name new_name

Wenn Sie den Namen eines anderen Zweigs in einen bereits vorhandenen Namen ändern möchten:

git branch -M old_name new_name_that_already_exists

Hinweis: Der letzte Befehl ist destruktiv und benennt Ihren Zweig um. Sie verlieren jedoch den alten Zweig mit diesem Namen und diesen Commits, da die Zweignamen eindeutig sein müssen.


11

Wenn Sie den Namen des aktuellen Zweigs ändern möchten, führen Sie Folgendes aus:

git branch -m [old_branch] [new_branch]

Wenn Sie den alten Remote-Zweig löschen möchten, führen Sie Folgendes aus:

git push origin :[old_branch]

Wenn Sie den alten Remote-Zweig löschen und einen neuen Remote-Zweig erstellen möchten, führen Sie Folgendes aus:

git push origin :old_branch new_branch

6

Das Umbenennen des Git-Zweigs kann erfolgen mit:

  1. git branch -m oldBranch newBranch

  2. git branch -M oldBranch ExistingBranch

Der Unterschied zwischen -m und -M :

-m: Wenn Sie versuchen, Ihren Zweig mit -m mit einem vorhandenen Zweignamen umzubenennen . Es wird ein Fehler ausgegeben, der besagt, dass der Zweig bereits vorhanden ist. Sie müssen einen eindeutigen Namen angeben.

Aber,

-M: Dies hilft Ihnen, das Umbenennen mit einem bestimmten Namen zu erzwingen, auch wenn dieser vorhanden ist. Ein bestehender Zweig wird also vollständig damit überschrieben ...

Hier ist ein Beispiel für ein Git-Terminal:

mohideen@dev:~/project/myapp/sunithamakeup$ git branch
  master
  master0
  new_master
  test
* test1
mohideen@dev:~/project/myapp/sunithamakeup$ git branch -m test1 test
fatal: A branch named 'test' already exists.
mohideen@dev:~/project/myapp/sunithamakeup$ git branch -M test1 test
mohideen@dev:~/project/myapp/sunithamakeup$ git branch
  master
  master0
  new_master
* test
mohideen@dev:~/project/myapp/sunithamakeup$

5

Für Git-GUI-Benutzer könnte es nicht viel einfacher sein. Wählen Sie in der Git-GUI den Zweigstellennamen aus der Dropdown-Liste im Dialogfeld "Zweig umbenennen", das über den Menüpunkt Zweig: Umbenennen erstellt wurde, geben Sie einen neuen Namen ein und klicken Sie auf "Umbenennen". Ich habe hervorgehoben, wo sich die Dropdown-Liste befindet.

Benennen Sie einen lokalen Git-Zweig um


3

Wenn du möchtest:

  • Benennen Sie das Git-Repository um und führen Sie Folgendes aus: git branch -m <oldname> <newname>
  • Löschen Sie den alten Zweig durch: git push origin: old-name new-name
  • Übernehmen Sie es mit: git commit <newname>
    • und dann drücken mit: git push origin new_branch_name:master
  • Wenn Sie den Status überprüfen möchten, verwenden Sie: git status
  • Wenn Sie auschecken möchten, verwenden Sie: git checkout

3

Alle vorherigen Antworten sprechen über git branch -m . Natürlich ist es einfach zu bedienen, aber für mich kann es etwas schwierig sein, sich an einen anderen Git-Befehl zu erinnern. Also habe ich versucht, die Arbeit mit dem mir bekannten Befehl zu erledigen. Ja, Sie können es erraten.

Ich benutze git branch -b <new_branch_name>. Und wenn Sie den alten Zweig jetzt nicht speichern möchten, können Sie ihn ausführen git branch -D <old_branch_name>, um ihn zu entfernen.

Ich weiß, dass es ein bisschen langweilig sein mag, aber es ist einfacher zu verstehen und sich zu erinnern. Ich hoffe es ist hilfreich für dich.


Wenn Sie Probleme haben, sich Befehle zu merken, können Sie Shell- oder Git-Aliase für sich selbst einrichten.
Sean

Was ist, wenn ich auf so vielen verschiedenen Computern einen Befehl ausführen muss?
Dai Kaixian

1

In PhpStorm:

VCS → Git → Zweige ... → Lokale Zweige → _Ihre_Zweig_ → Umbenennen


0

Alles was Sie tun müssen, sind die drei Schritte:

  1. Geben Sie dem alten Zweig unter .git / refs / Heads den neuen Namen
  2. Geben Sie dem alten Zweig unter .git / logs / refs / Heads den neuen Namen
  3. Aktualisieren Sie die Datei .git / HEAD, um zu Ihrem neuen Filialnamen zu gelangen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.