Tauschen Sie einen Master- und einen Feature-Zweig aus

Lesezeit: 3 Minuten

Benutzer-Avatar
Hundewetter

Wir befinden uns in der Situation, wo Meister hat neue Feature-Arbeit, und Merkmal1 (der vom Meister abgezweigt ist) ist der stabile Meister. Wie können wir die Dinge so ändern, dass sie „die Plätze tauschen“? Das heißt, feature1 wird master und master wird newfeaturebranch?

Ich habe ein paar ähnliche SO-Fragen gefunden, aber in diesen Fällen haben sie sich nicht mehr um die alten Master-Commits gekümmert. Hier wollen wir den aktuellen Master als neuen newfeaturebranch beibehalten.

Ich habe an eine Möglichkeit gedacht, dies zu tun:

  1. Schaffen newfeaturebranch vom aktuellen Meister.
  2. Commits zurücksetzen/löschen von Meister zurück zu Merkmal1‘s Verzweigungspunkt.
  3. Verschmelzen Merkmal1 hinein Meister.
  4. Zweig löschen Merkmal1.

Sie können Branches umbenennen:

git branch -m master newfeaturebranch
git branch -m feature1 master

  • Interessant. Und dann kann ich diese auf eine Fernbedienung (Github) schieben, und es funktioniert einfach?

    – Hundewetter

    19. Juni 2013 um 19:56 Uhr

  • Wie der neue Meister ist voraus des alten Masters wird sich Git nicht beschweren (es wird sich nur beschweren, wenn Sie nicht vorspulen können). Ebenso wie die newfeaturebranch ist ein komplett neuer Zweigname, der auf der Fernbedienung noch nicht existiert, das sollte auch funktionieren. Nur wenn Sie einen Zweig aktualisieren möchten, in dem Commits „entfernt“ werden, müssen Sie dies tun Druck zwingen es mit git push -f.

    – stupsen

    19. Juni 2013 um 19:58 Uhr

  • Danke, das hat super funktioniert. Beide alten Zweige hatten gleichzeitige Commits, und daher war eine Kraft erforderlich. Aber diese Operation ist zu erwarten: Ich habe auch “Archiv”-Zweige von jedem der Originale erstellt, nur für den Fall, dass etwas schief geht.

    – Hundewetter

    19. Juni 2013 um 21:53 Uhr

  • Was ist mit anderen? würden ihre lokalen Kopien des Repositorys nicht verwirrt werden, wenn sie auf dem alten Master wären? Oder würden sie automatisch umschalten newfeaturebranch jetzt?

    – rubo77

    25. November 2014 um 11:51 Uhr

  • @ rubo77 Ja, wenn Sie Zweige nicht nur lokal, sondern auch auf der Fernbedienung umbenennen, sollten Sie mit den anderen Entwicklern kommunizieren, dass Sie diese Änderung vorgenommen haben. Wenn sie versuchen, Änderungen zusammenzuführen, wird Git dies ablehnen wenn die Fernbedienung enthält weniger Commits. In diesem Fall a git reset --hard origin/master funktioniert, um auf den Master der Fernbedienung zurückzusetzen, indem alles andere weggeworfen wird (wenn Sie also lokale Änderungen haben, möchten Sie diese möglicherweise in einem separaten Zweig sichern).

    – stupsen

    25. November 2014 um 13:00 Uhr

Ich habe mit der Lösung von Poke begonnen, aber nach dem Pushen verfolgten die lokalen Zweige immer noch die alten Remote-Zweige. Um die richtigen Zweige zu verfolgen, musste ich nur die hinzufügen -u Möglichkeit zum Schieben.

git branch -m master newfeaturebranch
git branch -m feature1 master

git push -uf origin master
git push -u origin newfeaturebranch

Es kann auch in zwei Schritten durchgeführt werden, indem zuerst der richtige Zweig zum Verfolgen gedrückt und dann angepasst wird:

git push -f origin master
git push origin newfeaturebranch

git branch -u origin/master master
git branch -u origin/newfeaturebranch newfeaturebranch

Benutzer-Avatar
Guillaume Darmont

BEARBEITEN: Dieser Beitrag wurde geschrieben, bevor Sie Ihre Frage bearbeitet haben, als Sie sagten, dass Sie einfach „Plätze tauschen“ möchten. Wenn Sie keine Namen behalten müssen, reicht die Lösung von Poke aus.


Sie benötigen einen dritten Zweig tmpgenau wie das Austauschen von Variablen beim Programmieren:

  • git checkout -b tmp master : neu einschalten tmp Zweig erstellt aus master
  • git branch -D master : Zweig löschen master
  • git checkout -b master feature1 : neu erstellen master aus feature1
  • git branch -D feature1 : Zweig löschen feature1
  • git checkout -b feature1 tmp : neu erstellen newfeaturebranch aus tmp (Welche ist wo master war ganz am Anfang)

  • Sie sollten keine Großbuchstaben verwenden -D kennzeichnen, wenn Sie es nicht explizit benötigen. -d reicht.

    – stupsen

    19. Juni 2013 um 19:54 Uhr

  • Wenn er die Namen behalten möchte, könnte er einfach umbenennen newfeaturebranch hinein feature1also ist die Lösung von Poke unbedingt “genug”.

    – Angstrom

    13. Juli 2017 um 17:02 Uhr

1226270cookie-checkTauschen Sie einen Master- und einen Feature-Zweig aus

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy