Ich habe zwei Zweige email
und staging
. staging
ist die neueste und ich brauche die alten Änderungen im email
Zweig nicht mehr, möchte sie aber nicht löschen.
Ich möchte also nur den gesamten Inhalt von staging
in email
speichern, damit beide auf dasselbe Commit verweisen. Ist das möglich?
Antworten:
Sie können die Zusammenführungsstrategie "Unsere" verwenden:
quelle
;
am Ende eines jeden Befehls? Ich habe auf das verzichtet;
und es scheint zu funktionieren. Auch diese Antwort ist unvollständig. Der dritte Schritt besteht darin, den alten Zweig (E-Mail) auszuchecken und dann erneut mit dem Staging zusammenzuführen.git rebase -s theirs <oldbranc> <newbranch>
funktioniert auch (egal welcher Zweig Sie sind). Beachten Sie, dass in Rebase "ihre" tatsächlich die neue Branche ist, da "unsere" der Kopf ist, auf den wir derzeit die Commits anwenden.Wenn Sie nur möchten, dass die beiden Zweige "E-Mail" und "Staging" identisch sind, können Sie den Zweig "E-Mail" mit einem Tag versehen und dann den Zweig "E-Mail" auf den Zweig "Staging" zurücksetzen:
Sie können den Zweig "Staging" auch im Zweig "E-Mail" neu einrichten. Das Ergebnis enthält jedoch die Änderung der beiden Zweige.
quelle
git checkout
,git check
existiert meines Wissens nichtemail
Der Zweig des Zweigs sollte nur auf den gleichen Kopf von zeigen,staging
und beide haben die gleichen Commits, die gleiche Geschichte.Ich habe mehrere Antworten gesehen und das ist das einzige Verfahren, mit dem ich das ohne Konflikte beheben kann.
Wenn Sie alle Änderungen von branch_new in branch_old wünschen, dann:
Sobald Sie diese vier Befehle angewendet haben, können Sie den branch_old problemlos drücken
quelle
Die anderen Antworten gaben mir die richtigen Hinweise, aber sie halfen nicht ganz.
Folgendes hat bei mir funktioniert:
Ohne den vierten Schritt der Verschmelzung mit unserer Strategie wird der Push als nicht schnelles Vorwärts-Update betrachtet und abgelehnt (von GitHub).
quelle
merge -m 'This is not my beautiful house.' -s ours origin/email
.Wenn Sie wie ich sind und sich nicht mit dem Zusammenführen befassen möchten, können Sie die obigen Schritte ausführen, außer dass Sie Gewalt anstelle von Zusammenführen anwenden, da dies eine ablenkende Protokollpapierspur erzeugt:
Hinweis: Dies ist nur möglich, wenn Sie das Material WIRKLICH nie wieder in E-Mails sehen möchten.
quelle
Ich wollte zwei Zweige zusammenführen, damit alle Inhalte
old_branch
mit den Inhalten von aktualisiert werdennew_branch
Für mich hat das wie ein Zauber gewirkt:
quelle
Wie wäre es mit:
quelle
Andere Antworten sahen unvollständig aus.
Ich habe es unten vollständig versucht und es hat gut funktioniert.
HINWEIS:
1. Erstellen Sie eine Kopie Ihres Repositorys, bevor Sie es unten versuchen, um auf der sicheren Seite zu sein.
Details:
1. Die gesamte Entwicklung findet im Dev-Zweig statt.
2. Der Qa-Zweig ist genau dieselbe Kopie von Dev.
3. Von Zeit zu Zeit muss der Dev-Code in den Qa-Zweig verschoben / überschrieben werden
Also müssen wir den qa-Zweig vom dev-Zweig überschreiben
Teil 1:
Mit den folgenden Befehlen wurde das alte qa auf ein neueres dev aktualisiert:
Automatischer Kommentar für den letzten Push gibt unten:
Dieser Kommentar sieht umgekehrt aus, da die obige Reihenfolge auch umgekehrt aussieht
Teil 2:
Im Folgenden finden Sie unerwartete, neue lokale Commits in dev, die unnötigen,
also müssen wir sie wegwerfen und dev unberührt lassen.
Teil 3:
Überprüfen Sie, ob alles wie erwartet ist:
Das ist alles.
1. altes qa wird jetzt durch neuen dev-verzweigungscode überschrieben
2. local ist sauber (remote origin / dev ist unberührt)
quelle
Der einfachste Weg, dies zu tun:
Jetzt sind der E-Mail-Zweig und die Bereitstellung identisch.
quelle
email
Verzweigung gelöscht . Es ist so, als würde man denemail
Zweig löschen und am Kopf desstaging
Zweigs neu erstellen .quelle
Dieser ändert den ursprünglichen neueren Zweig nicht und gibt Ihnen die Möglichkeit, vor dem endgültigen Festschreiben weitere Änderungen vorzunehmen.
quelle