2017-06-19 4 views
0

Das Problem ist: wir möchten topic in master verschmelzen, aber topic ist ein Vorfahre von master, so dass die Zusammenführung ein No-Op ist. Ein Commit zwischen topic und master hatte die vorherige Zusammenführung von topic in master zurückgesetzt. Es tat das mit reset nicht revert. Jetzt zeigt eine diff zwischen master..topic alle Änderungen, die wir anwenden möchten. Wie wenden wir diese Änderungen an?Anwenden von Änderungen, die zusammengeführt und dann zurückgesetzt wurden

 C  B  A  D 
master * ---- * ---- * ---- * ---- * 
         \ 
         \ 
        topic * ---- * ---- * ---- * 
  • A war ein merge.
  • B umgekehrt A und aber ohne revert.
  • C hinzugefügt weitere Commits

Edit:

B mehr als A zurückgekehrt, aber wir wollen nur die Änderungen neu beantragen, dass A eingeführt. Daher wird das Zurücksetzen B unser Ziel nicht erreichen, da es wiederherstellen wird.

+0

gerade 'git B' zurück. –

+0

@OliverCharlesworth Leider habe ich nicht erwähnt, dass "B" mehr als die Zusammenführung von "topic" zurückging. Entschuldigung. –

+0

Hmm, das heißt, dass der von dir erwähnte 'master..topic'-Unterschied tatsächlich ein * Superset * der Änderungen ist, die du vornehmen willst? –

Antwort

3

Es gibt einige Optionen:

  1. Sie können B zurückkehren und zurückkehren D. B Zurückkehren wird D wiederherstellen, so dass Sie D wieder zurück.

  2. Wenn das diff anzeigt, was Sie anwenden möchten, können Sie eine Patch-Datei aus dem diff erstellen und diese Patch-Datei im Master-Zweig anwenden.

Erstellen Sie den Patch:

git diff master..topic > file.patch 

Gehen Sie den Patch zu beherrschen und anwenden:

git apply file.patch 
+0

Das Erstellen und Anwenden eines Patches entspricht den Anforderungen. –

0

Blick auf:

Re-doing a reverted merge in Git

Kurze Antwort: kehren die revert. aber es gibt Fallstricke Sie in der git Dokumentation aussehen sollte

+0

Funktioniert das, wenn die Rückstellung kein "Zurück" war? –

+0

ja, benutze git log um den ref zu finden, dass du das reset gemacht hast, reverse das ref, und es ist dasselbe. –

+0

Entschuldigung. Ich habe meine Antwort aktualisiert, weil ich ein wichtiges Detail weggelassen habe. –

Verwandte Themen