Wie benenne ich meinen Git-Master-Zweig in "Release" um?

115

Wir möchten eine neue Richtlinie für unsere Projekte durchsetzen, wonach der Hauptzweig jetzt als Release-Zweig bezeichnet wird, um sicherzustellen, dass klarer ist, wie der Zweig verwendet werden soll. Natürlich werden wir auch Kandidatenzweige entwickeln und freigeben.

Ich verstehe, dass ich den Hauptzweig lokal umbenennen kann, indem ich einfach Folgendes verwende:

git branch -m master release

Dies ist jedoch nur lokal. Selbst wenn ich dies auf die Fernbedienung schiebe, zeigt der HEAD immer noch auf den Remote-Master-Zweig. Ich möchte den Hauptzweig vollständig entfernen und den lokalen Standardzweig beim ersten Klonen freigeben.

Wie kann ich das erreichen?

Da der Ursprung auf einem Gitorious- Server liegt, erhalte ich anscheinend Fehler beim Löschen des Hauptzweigs. Ich versuche jetzt zu sehen, ob es möglich ist, dies so zu ändern, dass der Standardzweig "Release" ist.

Kyle Hayes
quelle
2
Heh, fair genug. Der langfristige Wert ist hoch genug, um es zumindest zu versuchen.
Kyle Hayes
Mögliches Duplikat von Wie benenne ich einen lokalen Git-Zweig um?
Vineet Jain
Einige (Remote-) Server weigern sich, den "Standard" -Zweig zu löschen (dies ist bei Github der Fall). Sie müssen also möglicherweise auf den Server gehen, um einen anderen "Standard" -Zweig für die Zeit der Vorgänge auszuwählen ... Auf Github kann dies in der "Zweig" -Ansicht erfolgen.
Jehon
1
git branchunterstützt jetzt ein --moveFlag git-scm.com/docs/git-branch#Documentation/git-branch.txt---move
alxndr

Antworten:

139
git checkout -b release master    # Create and switch to the release branch
git push -u origin release        # Push the release branch to the remote and track it
git branch -d master              # Delete local master
git push --delete origin master   # Delete remote master
git remote prune origin           # Delete the remote tracking branch

Bitte beachten Sie , wenn Sie mit GitHub sind Sie in der ersten Änderung benötigen eine „default“ Zweig auf GitHub nach Schritt 3:

Gehen Sie in Ihrem Repository auf github.com zu EinstellungenZweigeStandardzweig . Ändern Sie es in " Freigeben" und führen Sie dann den Rest der Schritte aus.

Adam Dymitruk
quelle
3
Wenn ich git push --delete versuche, erhalte ich die folgende Fehlermeldung: Löschen des aktuellen Zweigs verboten
Kyle Hayes
8
Wenn Sie Github oder ähnliches verwenden, müssen Sie den Standardzweig zu etwas anderem machen: matthew-brett.github.com/pydagogue/gh_delete_master.html oder lassen Sie den Master einfach dort und ignorieren Sie ihn.
Adam Dymitruk
Ja, wir haben eine großartige Instanz. Lassen Sie mich sehen, ob dies eine Option ist.
Kyle Hayes
Es sieht so aus, als ob herrliche Commit-Hooks das Löschen des Hauptzweigs verbieten - ohne guten Grund, den ich sehen kann: /
fge
1
Gleiches ! [remote rejected] branch (deletion of the current branch prohibited) wird mit Bitbucket passieren. Schalten Sie das "Haupt-Repository" im Einstellungsbildschirm (unter dem Zahnradsymbol).
dnfehren
13

Überprüfen Sie Ihre Hauptniederlassung

git checkout master

Erstellen Sie Ihren Release-Zweig und wechseln Sie zu diesem:

git branch release
git checkout release

Schieben Sie das auf den Server

git push origin release

Löschen Sie die Hauptzweigreferenz auf dem Server

git push origin :master

Löschen Sie den lokalen Hauptzweig

git branch -d master
Jeff Ferland
quelle
2
An diesen Schritten kann ich erkennen, dass derselbe Fehler wie oben erwähnt auftritt.
Kyle Hayes
@KyleHayes Das ist ein Konfigurationsproblem des Servers. Obwohl dies standardmäßig so ist, sollte der Änderungsprozess entweder für den Benutzer offensichtlich oder auf Stackoverflow
Jeff Ferland am
Sie müssen zu einem anderen Zweig wechseln, bevor Sie einen Zweig löschen können.
Martinedwards
5

Hinweis: Diese Antwort ist für selbst gehostete Git-Server gedacht, auf die Sie über Befehlszeilenzugriff verfügen.

Da der Versuch, das remote mastervon einem Client zu löschen, in der Tat nicht zulässig ist und ich davon ausgehe, denyDeleteCurrentdass ein Verbot sinnvoll ist, möchte ich diese Einstellung nicht ändern.

Ich habe jedoch festgestellt, dass der einfachste Weg, Ihren Master umzubenennen, wenn Sie Befehlszeilenzugriff auf den Remote-Server haben, darin besteht, den Befehl zum Umbenennen direkt auf dem Remote-Server auszuführen.

Das hat bei mir funktioniert:

  1. Melden Sie sich über SSH beim Remote-Git-Server an
  2. Wechseln Sie in den Ordner xxx.git Ihres Projekts
  3. Lauf: git branch -m master release

Jetzt verwendet das Remote-Repository releaseals Standardzweig, und jeder git clonein diesem Repository von einem Client aus überprüft standardmäßig den Release-Zweig.

Dies ist auch nach dem Einrichten eines Bare-Repositorys sehr hilfreich, um es an Ihre Bedürfnisse anzupassen.

Christopher Lörken
quelle
3

Wie bereits von anderen erwähnt, handelt es sich hier um ein Problem, bei dem Sie den HEAD-Zweig standardmäßig nicht löschen können. Sie haben zwei Möglichkeiten, um dieses Problem zu umgehen. Eine besteht darin, sich beim Gitorious-Server (mit ssh) anzumelden, das Git-Repository auf dem Dateiserver zu suchen und Folgendes hinzuzufügen:

[receive]
        denyDeleteCurrent = warn

zur Konfiguration.

Eine einfachere Option besteht darin, nur den Standardzweig zu ändern. Gehen Sie zu Ihrem Repository in der Gitorious-Weboberfläche, drücken Sie auf "Repository bearbeiten" und setzen Sie "Kopf Ändern Sie die symbolische Referenz, auf die der HEAD im Git-Repository zeigt:". Nachdem Sie dies getan haben, können Sie den Hauptzweig löschen.

Aleksander Blomskøld
quelle
2

Wenn Sie mit GitHub auf dieses Problem stoßen , führen Sie die Schritte bis zum Löschen des Zweigs auf Remote aus. Das lässt es dich nicht tun. Melden Sie sich dann bei der Weboberfläche an und gehen Sie im Repository zu EinstellungenZweigeStandardzweig . Ändern Sie es in den neuen Zweig und führen Sie die restlichen Schritte aus.

Gru
quelle
1

Idealerweise möchten Sie das Tracking einrichten. Gehen Sie folgendermaßen vor:

git push origin HEAD:release
git checkout --track origin/release

Möchten Sie nun die anderen löschen?

git branch -d master
git push origin :master

Einfach!

gahooa
quelle
Ich habe den gleichen Fehler erhalten wie den, den ich in @ Adams Kommentar gepostet habe, als ich zum Befehl git push origin: master kam.
Kyle Hayes
0

Da Sie mit dem Umbenennen der Zweige fertig sind, setzen Sie den HEAD auf releasefür Remote

git remote set-head origin release

Um dann einen masterZweig in Remote zu löschen , müssten Sie der Administrator sein, zumindest auf GitHub. Weitere Informationen finden Sie in diesem Beitrag .

zyy
quelle