Haben Sie die Admin-Einstellungen überprüft? Mein aktuelles Projekt auf Github hat keine Zweige, aber Sie können das Repo dort umbenennen, sodass ich denke, Sie könnten auch Zweige umbenennen.
evanmcdonnal
12
@evanmcdonnal Nein, Sie können einen Git-Zweig von der GitHub-Site nicht umbenennen.
Andrew Marshall
Die Antworten auf diese Frage sind fast überall falsch. Die Frage ist nicht, wie man einen Git-Zweig umbenennt, sondern wie man einen Github- Zweig umbenennt . Viele Dinge auf Github sind an einen Zweig gebunden, was bedeutet, dass jede Antwort diese Dinge abdecken muss. Zum Beispiel das Umbenennen von Master zu Haupt
gman
@gman Für das, was es wert ist, scheinen diese Antworten den Geist der Frage des OP zu beantworten. Die Frage des OP wurde möglicherweise aus technisch anspruchsvoller Sicht oder aufgrund des relevanten Themas, mit dem Sie sich derzeit befassen, nicht perfekt formuliert. Aber dann kommt diese Frage nicht aus einem tiefen technischen Hintergrund von Git oder GitHub. Aus dieser Perspektive kann man dies als "Anfänger" - oder elementare Frage betrachten. Als solches ist es formuliert und für dieses Publikum angemessen beantwortet. Frustrierend, klar, aber ich denke, diese Frage, diese Antworten sind angemessen / relevant, insbesondere für Fragen zur Verwendung von Git / Hub vor BLM.
SherylHohman
Antworten:
309
Wie bereits erwähnt, löschen Sie den alten auf Github und drücken Sie ihn erneut, obwohl die verwendeten Befehle etwas ausführlicher als nötig sind:
Einfach. Wenn Sie die Befehle ein wenig zerlegen, lautet der Befehl git push im Wesentlichen:
git push <remote> <local_branch>:<remote_branch>
Ein Push ohne Angabe von local_branch bedeutet also im Wesentlichen, "nichts aus meinem lokalen Repository zu nehmen und es zum Remote-Zweig zu machen". Ich habe immer gedacht, dass dies völlig klobig ist, aber so wird es gemacht.
Bearbeiten: Ab Git 1.7 gibt es eine alternative Syntax zum Löschen eines Remote-Zweigs:
Bearbeiten: Wie von @ void.pointer in den Kommentaren erwähnt
Beachten Sie, dass Sie die beiden Push-Vorgänge kombinieren können:
git push origin :old_branch new_branch
Dadurch wird sowohl der alte Zweig gelöscht als auch der neue verschoben.
Dies kann in einen einfachen Alias umgewandelt werden, der den Namen des entfernten, ursprünglichen Zweigs und des neuen Zweigs als Argumente verwendet ~/.gitconfig:
Beachten Sie, dass Positionsargumente in Shell-Befehlen in älteren (vor 2.8?) Versionen von git problematisch waren, sodass der Alias je nach git-Version variieren kann. Weitere Informationen finden Sie in dieser Diskussion .
Beachten Sie, dass Sie die beiden Push-Vorgänge kombinieren können : git push origin :old_branch new_branch. Dadurch wird sowohl der alte Zweig gelöscht als auch der neue verschoben.
void.pointer
4
Gibt es einen Grund, warum der neue Zweig nicht verschoben werden kann, bevor der alte gelöscht wird? Ich persönlich bevorzuge Prozesse, bei denen der Löschvorgang nach dem erfolgreichen Erstellungsvorgang erfolgt, nur für den Fall, dass etwas schief geht.
jmort253
7
Funktioniert nicht. Es wird einfach den Zweig mit seinem alten Namen wieder auf Github setzen.
Geoff
1
@AdamParkin 1. git branch -m new_branch(benenne old_branch in new_branch um) 2. git commit -m 'msg', 3. git push4. Mhmm, old_branch taucht in Github auf, Google-Frage und ich werde zu deiner Antwort geführt 5. git push origin :old_branch(sagt es gelöscht) 6. git push origin new_branch... vervollständigt dann sagt * [new branch] new_branch -> old_branch. Geh zurück zu Github und tauche old_branchwieder auf. Wenn ich in der Github-Web-Benutzeroberfläche lösche, habe ich die Option "Wiederherstellen". Es scheint also, als würde das Drücken der new_branch nur wiederhergestellt.
Kcvin
2
Beachten Sie, dass beim Umbenennen des Zweigs alle Pull-Anforderungen, die Sie für diese Pull-Anforderung geöffnet haben, automatisch geschlossen werden. Wir mussten den Zweig wieder umbenennen und dann alle Pull-Anfragen manuell wieder öffnen ....
Dies ist die kurze Antwort, die funktioniert. Übrigens könnte der erste Befehl auch als letzter in die Antwort eingefügt werden.
Eric Wang
Diese Antwort bezieht sich auf git not github
gman
1
Eigentlich habe ich das nur zweimal gemacht und es hat auf Github funktioniert.
Spozun
17
Ich habe 3 Befehle gefunden, wie Sie Ihren Git-Zweignamen ändern können, und diese Befehle sind eine schnellere Möglichkeit, 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
Wenn Sie Schritt für Schritt benötigen, können Sie diesen großartigen Artikel lesen
Dies ist für Git und GitHub ist unter Git, also wird es funktionieren und es funktioniert mit mir und mit anderen
Abdelrahman Mohamed
Es funktioniert nicht. Versuchen Sie den ersten und zweiten Schritt git branch -m new-name && git push origin :master new-name. Es wird scheitern. Wenn es bei dieser Antwort nur um Git und nicht um Github geht, ist diese Frage ein Duplikat mehrerer anderer Fragen und sollte geschlossen werden. Wenn es wirklich um Github geht, muss die Antwort Github abdecken. Diese Antwort nicht.
Gman
6
Sie können dies ohne Terminal tun. Sie müssen lediglich einen Zweig mit dem neuen Namen erstellen und den alten nach entfernen. Sie können diesen Beitrag verwenden, um das zu tun.
Importieren Sie Ihren lokalen Klon des Repositorys.
Klicken Sie in der Seitenleiste mit der rechten Maustaste auf Ihren Zweig, um ihn umzubenennen. Wählen Sie im Kontextmenü "Zweig umbenennen ..." und benennen Sie ihn um.
Danke, aber ich musste zum Zweig wechseln und ihn importieren.
Flash Sheridan
1
Diese Antwort bezieht sich auf git not github
gman
0
Dieser Artikel zeigt, wie es ganz einfach geht.
1. Um einen lokalen Git-Zweig umzubenennen, können Sie den Namen mit git branch -m feature1 feature2 dem Befehl Git branch -m ändern:
2. Wenn Sie nur nach dem Befehl zum Umbenennen eines Remote-Git-Zweigs suchen, ist dies "
git push -u origin feature2:feature3 Überprüfen Sie, ob Sie keinen haben." Tags auf dem Zweig, bevor Sie dies tun. Sie können dies mit tun git tag.
Machen Sie dasselbe auf allen Ihren Remote-Ursprüngen / Servern (falls vorhanden).
info : auf remote-server gibt es normalerweise keine refs / remotes / * verzeichnisse, da du bereits auf remote-server bist;) (naja, vielleicht ist es in fortgeschrittenen git-konfigurationen möglich, aber das habe ich noch nie gesehen)
Branch wird jetzt von awe/some/branchto umbenannt new-branch-name(lokal und remote!)
Verzeichnisse im Filialnamen wurden entfernt.
Info: Dieser Weg ist vielleicht nicht der beste, aber er funktioniert immer noch für Leute, die Probleme mit den anderen Wegen haben könnten
In meinem Fall benötigte ich einen zusätzlichen Befehl
, damit mein umbenannter Zweig hochgeschoben werden konnte . git branch --unset-upstream origin newname
(Zur Erleichterung des Tippens), ich zuerst git checkout oldname.
Führen Sie dann Folgendes aus:
Dieser zusätzliche Schritt ist möglicherweise nur erforderlich, weil ich (in der Regel) die Fernverfolgung in meinen Filialen über einrichte . Auf diese Weise brauche ich nach dem Auschecken nur noch den Typ anstattgit push-uorigin oldnameoldnamegit pushgit push origin oldname
Wenn ich den Befehl vorher NICHT benutze , erstellt git neu und drängt darauf - meine Absicht zu besiegen.git branch --unset-upstreamgit push origin newbrancholdbranchnewbranchorigin oldbranch
@ gman Punkt genommen. Meine Lösung verwendet git lokal, um einen Zweig auf GitHub remote umzubenennen, nachdem er in der lokalen Git-Kopie des GitHub-Repositorys umbenannt wurde. Vielleicht könnte es als spezielle Lösung angesehen werden, wenn Sie die Befehlszeile anstelle der GitHub-Website-Oberfläche verwenden möchten und einen lokalen Klon haben, den Sie ebenfalls aktualisieren möchten. Vielen Dank, dass Sie diese Unterscheidung hervorgehoben und klargestellt haben, dass diese Antwort eher für einen Sonderfall als für eine allgemeine Lösung gilt.
SherylHohman
Das Problem ist, dass Github Features an Zweige bindet. Versuchen Sie, den Master in main umzubenennen, und Ihre Anweisungen schlagen fehl.
Gman
-1
Mit den folgenden Befehlen wird der Zweig lokal umbenannt, der alte Zweig am Remote-Standort gelöscht und der neue Zweig verschoben, wobei der lokale Zweig so eingestellt wird, dass der neue Remote verfolgt wird:
Obwohl Ihr Code-Snippet das Problem möglicherweise löst, sollten Sie beschreiben, wozu Ihr Code dient (wie er das Problem löst). Darüber hinaus möchten Sie vielleicht stackoverflow.com/help/how-to-answer
Ahmad F
Diese Antwort bezieht sich auf git not github
gman
-1
So einfach ist das . Um git branch lokal umzubenennen und remote zu verwenden, verwenden Sie dieses Snippet (getestet und funktioniert wie ein Zauber):
Git-Referenz:
Wird mit der Option -m oder -M in umbenannt. Wenn ein entsprechendes Reflog vorhanden ist, wird es entsprechend umbenannt und ein Reflog-Eintrag erstellt, um die Umbenennung des Zweigs zu speichern. Wenn vorhanden, muss -M verwendet werden, um die Umbenennung zu erzwingen.
Schritt löschen:
Git-Referenz: git push origin: experimentell Suchen Sie im Ursprungs-Repository nach einer Referenz
, die mit experimentell übereinstimmt (z. B. refs / Heads / experimentell), und löschen Sie sie.
Update auf Remote Repo Schritt (Upstream-Referenz für Tracking):
Git-Referenz:
--set-upstream Fügen Sie für jeden Zweig, der aktuell ist oder erfolgreich gepusht wurde, eine Upstream-Referenz (Tracking-Referenz) hinzu, die von git-pull [1] ohne Argumente und anderen Befehlen verwendet wird. Weitere Informationen finden Sie unter branch..merge in git-config [1].
Führen Sie auf dem Git-Zweig git branch -m alter_name neuer_name aus. Dadurch wird der Zweigstellenname auf Ihrem lokalen Repo-Git-Push-Ursprung geändert: alter_name neuer_name Hiermit wird der geänderte Name auf remote verschoben und der alte Zweig gelöscht Remote-Zweig. Dies löst das Problem
Antworten:
Wie bereits erwähnt, löschen Sie den alten auf Github und drücken Sie ihn erneut, obwohl die verwendeten Befehle etwas ausführlicher als nötig sind:
Einfach. Wenn Sie die Befehle ein wenig zerlegen, lautet der Befehl git push im Wesentlichen:
Ein Push ohne Angabe von local_branch bedeutet also im Wesentlichen, "nichts aus meinem lokalen Repository zu nehmen und es zum Remote-Zweig zu machen". Ich habe immer gedacht, dass dies völlig klobig ist, aber so wird es gemacht.
Bearbeiten: Ab Git 1.7 gibt es eine alternative Syntax zum Löschen eines Remote-Zweigs:
Bearbeiten: Wie von @ void.pointer in den Kommentaren erwähnt
Dies kann in einen einfachen Alias umgewandelt werden, der den Namen des entfernten, ursprünglichen Zweigs und des neuen Zweigs als Argumente verwendet
~/.gitconfig
:Verwendungszweck:
Beachten Sie, dass Positionsargumente in Shell-Befehlen in älteren (vor 2.8?) Versionen von git problematisch waren, sodass der Alias je nach git-Version variieren kann. Weitere Informationen finden Sie in dieser Diskussion .
quelle
git push origin :old_branch new_branch
. Dadurch wird sowohl der alte Zweig gelöscht als auch der neue verschoben.git branch -m new_branch
(benenne old_branch in new_branch um) 2.git commit -m 'msg'
, 3.git push
4. Mhmm, old_branch taucht in Github auf, Google-Frage und ich werde zu deiner Antwort geführt 5.git push origin :old_branch
(sagt es gelöscht) 6.git push origin new_branch
... vervollständigt dann sagt* [new branch] new_branch -> old_branch
. Geh zurück zu Github und taucheold_branch
wieder auf. Wenn ich in der Github-Web-Benutzeroberfläche lösche, habe ich die Option "Wiederherstellen". Es scheint also, als würde das Drücken der new_branch nur wiederhergestellt.Folgende Befehle haben bei mir funktioniert:
quelle
Ich habe 3 Befehle gefunden, wie Sie Ihren Git-Zweignamen ändern können, und diese Befehle sind eine schnellere Möglichkeit, dies zu tun
Wenn Sie Schritt für Schritt benötigen, können Sie diesen großartigen Artikel lesen
So benennen Sie Git Local und Remote Branches um
quelle
git push --set-upstream
Dies ist der wichtigste Teil, wenn Sie den Filialnamen lokal mit der Github-App ändern, bevor Sie die Remote-Filiale löschen.Entfernen Sie einfach den alten Zweig und erstellen Sie einen neuen.
Beispiel (ausschließlich Umbenennen des Remote-Zweigs):
Sie sollten wahrscheinlich auch den lokalen Zweig umbenennen und die Einstellungen für das Drücken / Ziehen ändern.
quelle
git push origin newname:refs/heads/newname
? master und newname verweisen möglicherweise nicht auf dasselbe Commit.Benennen Sie Zweige in git local und remote um
1. Benennen Sie Ihre lokale Niederlassung um.
Wenn Sie sich in der Filiale befinden, die Sie umbenennen möchten:
Wenn Sie sich in einem anderen Zweig befinden:
2. Löschen Sie den Remote-Zweig mit dem alten Namen und drücken Sie den lokalen Zweig mit dem neuen Namen.
3. Setzen Sie den Upstream-Zweig für den lokalen Zweig mit dem neuen Namen zurück.
Wechseln Sie in die Filiale und dann:
Die Schlussfolgerung lautet also
quelle
git branch -m new-name && git push origin :master new-name
. Es wird scheitern. Wenn es bei dieser Antwort nur um Git und nicht um Github geht, ist diese Frage ein Duplikat mehrerer anderer Fragen und sollte geschlossen werden. Wenn es wirklich um Github geht, muss die Antwort Github abdecken. Diese Antwort nicht.Sie können dies ohne Terminal tun. Sie müssen lediglich einen Zweig mit dem neuen Namen erstellen und den alten nach entfernen. Sie können diesen Beitrag verwenden, um das zu tun.
https://github.com/blog/1377-create-and-delete-branches
quelle
Folgendes hat bei mir funktioniert:
1.) Erstelle zuerst den neuen Zweig: git push github neuer Name: refs / Heads / neuer Name
2.) Gehen Sie auf der Github-Site zu den Einstellungen und ändern Sie den Standardzweig in newname
3.) Lösche den alten Namen git push github - lösche den alten Namen
quelle
quelle
Dieser Artikel zeigt, wie es ganz einfach geht.
1. Um einen lokalen Git-Zweig umzubenennen, können Sie den Namen mit
git branch -m feature1 feature2
dem Befehl Git branch -m ändern: 2. Wenn Sie nur nach dem Befehl zum Umbenennen eines Remote-Git-Zweigs suchen, ist dies "
git push -u origin feature2:feature3
Überprüfen Sie, ob Sie keinen haben." Tags auf dem Zweig, bevor Sie dies tun. Sie können dies mit tun
git tag
.quelle
Eine andere Möglichkeit besteht darin , die folgenden Dateien umzubenennen :
.git/refs/head/[branch-name]
in.git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/[branch-name]
in.git/refs/remotes/[all-remote-names]/new-branch-name
Benennen Sie head & remotes sowohl auf Ihrem lokalen PC als auch auf den Ursprüngen / Remote-Servern um.
Zweig wird jetzt umbenannt (lokal und remote!)
Beachtung
Wenn Ihr aktueller Filialname slashes (
/
) enthält, erstellt git die Verzeichnisse wie folgt:aktueller Filialname:
"awe/some/branch"
.git/refs/head/awe/some/branch
.git/refs/remotes/[all-remote-names]/awe/some/branch
Wunsch Branchenname:
"new-branch-name"
branch
Datei von.git/refs/*/awe/some/
.git/refs/head/
.branch
Datei von allen.git/refs/remotes/*/awe/some/
.git/refs/remotes/*/
.branch
Dateien in umnew-branch-name
..git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/new-branch-name
Branch wird jetzt von
awe/some/branch
to umbenanntnew-branch-name
(lokal und remote!)Verzeichnisse im Filialnamen wurden entfernt.
Info: Dieser Weg ist vielleicht nicht der beste, aber er funktioniert immer noch für Leute, die Probleme mit den anderen Wegen haben könnten
quelle
In meinem Fall benötigte ich einen zusätzlichen Befehl , damit mein umbenannter Zweig hochgeschoben werden konnte .
git branch --unset-upstream
origin newname
(Zur Erleichterung des Tippens), ich zuerst
git checkout oldname
.Führen Sie dann Folgendes aus:
git branch -m newname
git push origin :oldname
oder odergit push origin --delete oldname
git branch --unset-upstream
git push -u origin newname
git push origin newname
Dieser zusätzliche Schritt ist möglicherweise nur erforderlich, weil ich (in der Regel) die Fernverfolgung in meinen Filialen über einrichte . Auf diese Weise brauche ich nach dem Auschecken nur noch den Typ anstatt
git push
-u
origin oldname
oldname
git push
git push origin oldname
Wenn ich den Befehl vorher NICHT benutze , erstellt git neu und drängt darauf - meine Absicht zu besiegen.
git branch --unset-upstream
git push origin newbranch
oldbranch
newbranch
origin oldbranch
quelle
Mit den folgenden Befehlen wird der Zweig lokal umbenannt, der alte Zweig am Remote-Standort gelöscht und der neue Zweig verschoben, wobei der lokale Zweig so eingestellt wird, dass der neue Remote verfolgt wird:
quelle
So einfach ist das . Um git branch lokal umzubenennen und remote zu verwenden, verwenden Sie dieses Snippet (getestet und funktioniert wie ein Zauber):
Erläuterung:
Schritt umbenennen:
Schritt löschen:
Update auf Remote Repo Schritt (Upstream-Referenz für Tracking):
quelle
3 einfache Schritte
Git Push Origin Kopf
Git-Zweig -m alter-Zweig-Name neuer-Zweig-Name
Git Push Origin Kopf
quelle
Führen Sie auf dem Git-Zweig git branch -m alter_name neuer_name aus. Dadurch wird der Zweigstellenname auf Ihrem lokalen Repo-Git-Push-Ursprung geändert: alter_name neuer_name Hiermit wird der geänderte Name auf remote verschoben und der alte Zweig gelöscht Remote-Zweig. Dies löst das Problem
quelle