2017-11-06 2 views
1

Ich bin mit git und arbeiten mit Master/Entwicklung/Feature-Zweige.git: Ich versehentlich Feature Zweig in Master anstelle von

Der Master hatte nur die README-Datei. Und unglücklicherweise habe ich versehentlich den Feature-Zweig, in dem ich gearbeitet habe, mit dem Master zusammengeführt, statt mit dem Entwicklungszweig. Und auch den Feature-Zweig entfernt.

Ich weiß wenig über Git und ich bin verwirrt darüber, was zu tun ist. Aber ich denke, das Richtige ist es, die Änderungen auf dem Feature-Zweig (bereits entfernt) zu integrieren und die Zusammenführung in den Master umzuwandeln. Aber wie mache ich das, wenn ich den Feature-Zweig bereits entfernt habe?

Antwort

3

Bitte beachte, dass ich hier gehe davon aus, dass Sie nicht push die Ergebnisse der Zusammenführung ed. Wenn dies der Fall ist, kann dies immer noch funktionieren, erfordert jedoch einen "force push", der wiederum alle anderen betrifft, die das Repo verwenden (siehe "Wiederherstellen von Upstream-Rebase" in den Dokumenten git rebase), da dies im Wesentlichen die Situation wäre. Aber wenn du es nicht getan hast, musst du dir darüber keine Sorgen machen. Also:

Die erste Sache ist, den Feature-Zweig neu zu erstellen. Ich gehe davon aus, dass es nur lokal existiert hat. (Wenn es vor der Zusammenführung geschoben worden war, könnten Sie in der Lage sein, sie von der entfernten sich zu erholen, aber so oder so der Ansatz wird unten arbeiten.) So

git checkout master 
git checkout -b feature 
git reset --hard HEAD^2 

Nun ist die Feature-Zweig zu dem Merge wiederhergestellt commit " zweites Elternteil "- das sollte sein, wo es vor der Zusammenführung war.

Als nächstes müssen Sie die Zusammenführung von master entfernen.

git checkout master 
git reset --hard HEAD^ 

Und das ist es; Sie sind bereit, das Feature in den Entwicklungszweig zu integrieren.

+0

Ich habe bereits die Zusammenführung geschoben. Ich studiere jetzt die Git-Rebase. –

1

Erste Kasse master-Zweig mit git checkout master, und eine Niederlassung feature von Master-Zweig genannt erstellen:

git checkout -b feature 

Wieder Kasse master-Zweig, und führen Sie den folgenden Befehl ein:

git log 

Das sollte Liste der Commits, die Sie im Master-Zweig haben. Sie müssen durch die Festschreibungsliste scrollen, um die Festschreibungs-ID zu kopieren, die Sie wiederherstellen möchten. Nehmen wir an, id ist advcf456yhn8, dann müssen Sie den Befehl schreiben:

git reset --hard advcf456yhn8 

Dadurch werden alle Änderungen rückgängig machen & wieder zurück zu aktuellen Inhalt an bestimmten commit id.

Jetzt haben Sie einen Zweig feature erstellt, den Sie in develop zusammenführen können. Einfach tun git checkout develop & Merge feature Zweig mit git merge feature.

auch mit dem folgenden Befehl ausgeführt wird, können Sie Ihre gesamte begehen Geschichte erhalten:

git reflog 
+1

Nicht sicher, ob Sie ist mir bewusst, aber die Beispiel-ID, die Sie angegeben haben, ist ungültig. Eine Commit-ID besteht nur aus Hexadezimalziffern (0-9 und a-f). Außerdem gibt es etwas einfachere Befehle, die es vermeiden, direkt mit der Commit-ID zu arbeiten. Und ich würde empfehlen, die Zusammenführung aus beiden Zweigen zu entfernen –

+0

Ich gab nur ein Beispiel, nichts mehr. Er erwähnte, dass er neu bei Git ist, daher war es meiner Meinung nach eine bessere Idee, einen grundlegenden Rückzieher zu machen. –

+0

Ich habe darüber nachgedacht. Aber ich hatte Angst, dass der Reset im Master-Zweig den neuen Feature-Zweig ändern könnte. –

1

einfache Art und Weise des Erhaltens der Master zur vorherigen Commit zurück:

  1. Klon Sie Master-Repository
  2. Wenn Sie GUI auf git verwenden, verwenden Sie Option "zurückkehren" die besondere auszuwählen ID verpflichten
  3. Sobald wieder zurückgesetzt, bitte Commit und Push zu Master.

CMD:

  1. git clone Master
  2. git reset --hard HEAD^
  3. git commit -m ""
  4. git push
+0

Das Commit in Frage ist eine Zusammenführung. Es gibt mehrere Komplikationen beim Versuch, eine Zusammenführung rückgängig zu machen, einschließlich der Tatsache, dass die bereitgestellten Befehle nicht funktionieren. Auch wenn keine Zusammenführung stattfindet, kehrt eine Rückstellung nicht zu einem vorherigen Festschreiben zurück; Es aktualisiert den Inhalt nur in einem vorherigen Zustand. –

Verwandte Themen