2015-08-21 9 views
8

Ich hoffe, der Titel ist nicht sehr verwirrend.GIT: Wie Änderungen aus der Verzweigung nach einer umgekehrten Zusammenführung ziehen

Geschichte (aka Was ich tat, falsch):

der dort Lassen Sie sagen, sind zwei Zweige, Master und Funktion. Feature ist ein Zweig, in dem ich ein längeres Feature-Projekt behalte, und von Zeit zu Zeit verwende ich den Git-Pull-Ursprungs-Master in diesem Zweig, um mit Änderungen im Hauptcode auf dem Laufenden zu bleiben.

Ich versehentlich zusammengeführt und Feature in Master geschoben.

Es war nicht annähernd fertig, also habe ich versucht, es rückgängig zu machen. Ich habe versucht folgendes: http://sethrobertson.github.io/GitFixUm/fixup.html#pushed_new_merge Aber ich denke, ich habe es falsch gemacht. Ich habe verwendet: git zurück dann beging die Rückstellung und schob es. Problem schien gelöst - das Feature wechselt wo nicht mehr auf Master.

Jetzt ist das Problem, dass, wenn ich versuche, git pull Ursprung Meister auf Feature-Zweig zu verwenden, es meine Dateien löscht und alle Änderungen rückgängig macht, da es mit dem Rücksetzen-commit verschmilzt. Der Kopf des Masters ist weit hinter diesem zurück und ich muss die Änderungen von neueren Commits ziehen, um mit dem Feature-Zweig fortzufahren.

Ich habe das Thema gegoogelt und die vielversprechendste Antwort lautet: https://metlos.wordpress.com/2012/01/13/git-merging-after-a-revert/ aber hier die Zusammenführung geht andere Art und Weise als ich will (Feature zu meistern, ich brauche Master zu verfügen).

Ich denke daran, Klon Zweig des Meisters zu erstellen, dann die Anweisungen aus dem Link auf diesem Zweig anwenden, so kann ich die Ergebnisse, die ich brauche, aber ich fürchte, es ist eine temporäre Lösung, die ich anwenden müssen, wann immer ich will vom Meister ziehen.

Ich versuchte am besten für diese Geschichte, nicht chaotisch zu sein, Wenn etwas nicht verständlich ist, werde ich klären.

Antwort

3

Wenn Sie nicht master-Zweig zu einem Team/public-Repository, und Sie haben keine begehen nach dem Zug auf Master gedrückt haben, können Sie

git reset --hard **the-commit-before-pulling-feature-branch** 

auf dem Master Zweig tun. Dies wird effektiv den Fehler aus der Geschichte löschen und gibt eine saubere Geschichte.

sonst, (dh, wenn Sie bereits Master zu einem Repo oder mehr getan Commits auf Master gedrückt haben), können Sie

git revert **the-revert-commit** 

auf dem Merkmal Zweig tun, nachdem die Master-Ziehen, effektiv die revert zurückkehrt verpflichten.

+1

Ich hatte es geschoben und neue Commits wurden bereits gemacht. Ihre Lösung funktionierte wie ein Zauber. Zuerst bekam ich einen Fehler, der nicht rückgängig gemacht werden konnte, aber es war nur eine Datei, die manuell zusammengeführt werden musste. Vielen vielen Dank. – effique