it-swarm.com.de

Egit - Kann jetzt nicht ausgecheckt werden - bleibt im Rebase-Status hängen

Ich habe vor einigen Tagen eine ähnliche Frage gestellt, aber ich habe keine hilfreiche Antwort erhalten, deshalb möchte ich alles genauer machen.

Ich habe ein großes Projekt als privates Repo auf Github. Ein Freund von mir und ich arbeiten gerade daran. Ich habe das gesamte Repo in ein lokales Repository und in Eclipse importiert, und alles lief gut, bis die verschmelzenden Konflikte auftraten. Jedes Mal, wenn ich einen Verschmelzungskonflikt bekomme (z. B. wenn ich vergessen habe zu ziehen, bevor ich an häufig verwendeten Klassen arbeite), wechselt das gesamte Projekt in meinen Eclipse-Arbeitsbereichen in den Status "Rebase w/merge":

 Rebase w/merge state of the project

Jetzt bekomme ich Spuren, als die Mischkonflikte aufkamen. Also öffnete ich die Klasse, um sie mit dem Merge-Tool zusammenzuführen, bearbeitete alles, was ich ändern musste, und fügte die Klasse erneut zum Index hinzu.

Als Nächstes habe ich alle zusammengeführten Änderungen festgelegt und alles in den Upstream-Bereich in den Master-Zweig verschoben (wir verwenden bisher nur Master, da wir beide nicht viel Erfahrung mit git und vcs/svn haben).

Aber jetzt kann ich weder zum Hauptzweig zurückwechseln noch Rebase abbrechen oder irgendetwas anderes tun.

Ich habe es versucht:

Rechtsklick auf Projektordner -> Team -> Switch To -> Master .  Checkout fail

Das ist die Fehlermeldung.

Als Nächstes wurde mir gesagt, die Rebase in Git Repositories View abzubrechen:

 Git Repo View

Weder mein lokales Repo noch das entfernte haben jedoch eine Option zur Umbasierung.

Als nächstes versuchte ich "Checkout" im Menü der lokalen Filiale. Gleiches Ergebnis ... Ich habe auch versucht, meinen lokalen Zweig in den Upstream zu verschieben:

 enter image description here

Dies ist mein Preset der Merge/Rebase-Option, aber beide Optionen bringen das gleiche Ergebnis hervor:

 enter image description here

Ich habe mir mein Repo in github angesehen - alle meine Änderungen einschließlich der Merge-Auflösung werden bereits in den Master-Zweig verschoben und können abgerufen werden. Mein Teamkollege kann sie ziehen und an dem Projekt weiterarbeiten. Aber ich kann diesem Rebase-Status nicht entgehen. Bei jedem Auftreten dieses Status musste ich alle Projektressourcen löschen, das lokale Repository löschen, alles erneut in Eclipse importieren und schließlich musste ich jede weitere Konfiguration immer und immer wieder vornehmen.

Also: Wie kann ich dieser Rebase entkommen? Und übrigens: Was ist der Unterschied zwischen rebase und fusionieren?

18
Cydhra

In der Git Staging-Ansicht gibt es eine Option zum Abbruch der Rebase.

 enter image description here

34

Verwenden Sie das Upstream-Commit zum lokalen Zweig zusammenführen.

Rebase bedeutet, den alten Master in einen neuen Master-Code umzuwandeln (d. H. Die Basis Ihres Zweigs zu ändern) und durch Zusammenführen werden Ihre Änderungen zum Master hinzugefügt.

Sie können auch versuchen, die Befehlszeile von git zu verwenden, um einen solchen Konflikt zu lösen.

Verwenden von Git Rebase/Merge Process Beim Arbeiten an Ihrem Browser werden alle Dateien hinzugefügt und an den Server übertragen

git add .
git commit -m "SSSS"
git Push -u Origin <BranchName>
git checkout master
git pull

[A] Der Master ist älterer Code, dh Sie können Ihren Code zusammenführen

git merge <your branch name>
git Push

[B] Master verfügt über neueren Code und zeigt eine Liste der Dateien an, die vom Server abgerufen werden

$ git checkout your_branch  Note: make sure you are working in your branch
$ git rebase master

Jetzt erhalten Sie eine Meldung über Konflikte. Beginnen Sie daher mit der Arbeit an jeder Datei von unten, um den Konflikt zu lösen fügen Sie diese Datei hinzu

$ git add <filename which you just updated> 
$ git rebase --continue

Befolgen Sie die beiden obigen Befehle, bis alle Konflikte gelöst sind ..__ Jetzt werden die geänderten Master in Ihrem Zweig zusammengeführt und auf den Server << IHR BRANCH verschoben. Jetzt müssen Sie den Master-Zweig aktualisieren

$ git checkout master
$ git merge <YOUR_BRANCH>
$ git Push

Überprüfen Sie __. HINWEIS: Wenn Sie Ihre neuen Änderungen überschreiben und Sie nicht fortfahren möchten, führen Sie Folgendes aus:

$git rebase --abort

Wenn Sie beim Zusammenführen/Erneuern ein Nachrichtenfenster zum Festschreiben Ihrer Festschreibungsanweisung erstellen, THERE IS NO ESCAPE ... schreiben Sie etwas und führen Sie dann die folgenden Schritte aus:

$git reset --hard HEAD~1

[Dieser Befehl setzt den aktuellen Commit-Kopf auf 1 Ebene zurück, und das, was bei der letzten Zusammenführung passiert ist, wird zurückgesetzt.]

1
anand mishra

Wenn Sie Probleme mit der Git Staging-Ansicht haben oder in der Staging-Ansicht das falsche Repository angezeigt wird, klicken Sie einfach auf das Dreieck neben dem Rebase-Symbol in der Symbolleiste und klicken Sie auf Abbruch.

Klick hier

0
Johnny

Wenn Sie im Rebase-Status blockiert sind und Eclipse den Abbruch verweigert (keine Antwort), müssen Sie die automatische Erstellung Ihres Projekts deaktivieren, indem Sie Folgendes deaktivieren:

Projekt/Build automatisch

Dadurch werden alle ausstehenden Builds gestoppt.

0
Denis S.