webentwicklung-frage-antwort-db.com.de

Machen Sie einen Merge-Commit von einem geschützten Zweig auf GitHub.com rückgängig

Wir haben unseren Entwicklungszweig auf GitHub so geschützt, dass niemand nachgeschaltet sein Commit direkt übertragen kann. Die Commits müssen einen bestimmten Feature-Zweig durchlaufen und durch eine Pull-Anforderung zusammengeführt werden.

Es gab ein Szenario, in dem ein Feature-Zweig (nach ordnungsgemäßer Überprüfung und Änderung) in den Entwicklungszweig eingefügt wurde und wir ihn später wiederherstellen müssen (möglicherweise aufgrund von Änderungen in den Anforderungen). Wenn ich versuche, das Merge-Commit im Downstream-Modus zurückzusetzen, kann ich nicht pushen, da der Zweig geschützt ist. Ich erinnere mich, dass GitHub beim Zusammenführen des Zweigs die Schaltfläche zum Zurücksetzen bereitgestellt hat. Aber irgendwie kann ich den Knopf jetzt nicht sehen (oder finden). Wir mussten das Commit auf die Priorität zurücksetzen, um den Schutz vorübergehend aus dem Entwicklungszweig zu entfernen und das Revert Commit (hässlichster Hack) voranzutreiben.

Gibt es eine andere bessere Alternative zum Zurücksetzen eines Commits von einem geschützten Zweig? Vielleicht fehlen mir einige GitHub-Funktionen oder ich habe sie falsch verstanden.

Ein weiteres Szenario ist, was passiert, wenn ich den Zweig nach dem Zusammenführen von GitHub gelöscht habe, wie kann ich ihn dann wiederherstellen?

14
nak

Auf GitHub zurückgreifen

Sie müssen keine Verzweigungen auf GitHub wiederherstellen (undelete), um Merge-Commits aufgrund von Pull-Anforderungen wiederherzustellen. Beispielsweise:

Revertable pull request

Nicht umkehrbare Zuganforderung

Manchmal wird die Schaltfläche zum Zurücksetzen nicht angezeigt. Von der GitHub-Hilfe aus Zurücksetzen einer Pull-Anfrage :

Hinweis: Sie müssen möglicherweise Git verwenden, um die einzelnen Commits manuell zurückzusetzen, wenn:

  • Das Zurücksetzen der Pull-Anforderung führt zu Zusammenführungskonflikten
  • Die ursprüngliche Pull-Anforderung wurde ursprünglich nicht in GitHub zusammengeführt (z. B. mithilfe eines Schnellvorlaufs in der Befehlszeile).

Es hat eine Weile gedauert, bis ich ein Beispiel gefunden habe, aber wenn der Hauptzweig nicht mit dem großen grünen Knopf auf GitHub in den Basiszweig eingebunden wurde, kann er auf GitHub nicht wiederhergestellt werden:

Non-revertable pull request

git revert

Lokal in der Befehlszeile können Sie die git revert Befehl zum Zurücksetzen von Änderungen.

Dies funktioniert sowohl auf Ihrem geschützten Zweig als auch auf einem nachgeordneten Zweig. git revert erstellt ein neues Commit vor dem aktuellen HEAD), sodass Sie Push nicht erzwingen müssen. Wenn Sie aus einem nachgeordneten Zweig stammen, können Sie manuell eine Pull-Anforderung für die zurückgesetzten Änderungen erstellen.

Das Zurücksetzen eines Zusammenführungs-Commits ist etwas komplizierter als das Zurücksetzen eines Commits eines einzelnen Elternteils. Daher würde ich vorschlagen, dass Sie sich diese Frage ansehen, um weitere Informationen zu erhalten, da dies etwas ist, was ich noch nie zuvor getan habe.

Wenn die Benutzer die Befehlszeile nicht gut benutzen, hat SourceTree ein Element im Kontextmenü, mit dem ein Commit rückgängig gemacht werden kann, aber ich weiß nicht, wie es mit Merge-Commits umgeht. Möglicherweise gibt es ähnliche Optionen in anderen GUI-Anwendungen.

Hoffe das hilft!

7