2015-11-30 20 views
11

Ich habe vor ein paar Tagen eine ähnliche Frage gestellt, aber ich habe keine hilfreiche Antwort bekommen, also möchte ich alles genauer machen.Egit - Kann nicht auschecken - steckt im Rebasestatus

Ich habe ein großes Projekt als private Repo auf GitHub. Ein Freund von mir und ich arbeiten gerade daran. Ich habe das gesamte Repository in ein lokales Repository und in die Finsternis importiert und alles lief gut, bis die Konflikte zusammenkamen. Jedesmal, erhalte ich eine Verschmelzung Konflikt (zB wenn ich vor der Arbeit an häufig verwendete Klassen zu ziehen vergessen), das gesamte Projekt in meiner Eclipse Workspaces schaltet in einen Zustand „Rebase w/merge“:

Rebase w/merge state of the project

Jetzt Ich bekomme Marken, wenn die Zusammenführungskonflikte auftraten. Also habe ich die Klasse geöffnet, um mit dem Merge-Tool zu verschmelzen, habe alles bearbeitet, was ich ändern musste, und die Klasse zum Index hinzugefügt.

Als nächstes habe ich alle Änderungen zusammengeführt und alles zum Upstream in den Master-Zweig geschoben (wir benutzen bisher nur Master, da wir beide nicht viel Erfahrung mit Git und VCS/SVN haben).

Aber jetzt kann ich weder zurück zum Master-Zweig wechseln noch Rebase stornieren oder irgendetwas anderes tun.

Ich habe versucht:

Rechtsklick auf Projektordner -> Team -> Wechseln zu -> Master. Checkout fail

Das ist die Fehlerbenachrichtigung.

Als nächstes wurde mir gesagt, das Fütterungsmaterial in Git-Repositorys Ansicht abzubrechen:

Git Repo View

Aber weder meine lokale Repo noch der entfernt man hat eine Option auf Rebasieren bezogen.

Als nächstes habe ich "checkout" im Menü der lokalen Niederlassung versucht. Gleiches Ergebnis. Ich habe auch versucht, meine lokale Niederlassung in den stromaufwärts zu schieben:

enter image description here

Das ist mein Preset des Merge/rebase Option, aber diese beiden Optionen bringen das gleiche Ergebnis auf:

enter image description here

Ich schaute in Reposito in GitHub - alle meine Änderungen einschließlich der Zusammenführung Auflösung sind bereits in den Master-Zweig geschoben und sind bereit zu holen. Mein Teamkollege kann sie ziehen und kann weiter an dem Projekt arbeiten. Aber ich kann diesen Rebase w/merge Zustand nicht verlassen. Jedes Mal, wenn dieser Zustand auftrat, musste ich alle Projektressourcen löschen, das lokale Repository löschen, alles wieder in Eclipse importieren und schließlich musste ich jede weitere Konfiguration wieder und wieder machen.

Also: Wie kann ich diese Rebase entkommen? Und übrigens: Was ist der Unterschied zwischen Rebase und Merging?

Antwort

25

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

enter image description here

+0

Vielen Dank! Das war die Option, nach der ich gesucht habe. Es ist ein wenig merkwürdig, dass ich die Rebase immer abbrechen muss, die ich nicht initiiert habe, aber das Abbrechen hat keine Auswirkungen auf die Serverdateien, wie ich bemerkt habe, also breche ich nach dem Zusammenführen einfach ab und alles ist in Ordnung. TY! – Cydhra

+0

Sie können auch auf "Weiter" klicken. EGit wird dann Rebase als getan markieren, denke ich. –

0

Verwenden der Merge-Commit stromaufwärts lokale Zweig.

Rebase bedeutet, den alten Master in einen neuen Master-Code zu ändern (d. H. Die Basis Ihres Zweiges zu ändern), und das Zusammenführen bedeutet, dass Sie Ihre Änderungen dem Master hinzugefügt haben.

Sie können auch versuchen, mit der Git-Befehlszeile einen solchen Konflikt zu lösen.

Mit Git Rebase/Merge-Prozess Während auf Ihrer Brach arbeiten bekommen alle Dateien hinzugefügt und schoben zum Server

git add . 
git commit -m "SSSS" 
git push -u origin <BranchName> 
git checkout master 
git pull 

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

git merge <your branch name> 
git push 

[B] der Meister hat neueren Code und zeigt eine Liste der Dateien gezogen wird vom Server

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

Nun werden Sie eine Meldung über Konflikte bekommen, damit beginnen für jede Datei von unten Arbeits Konflikt zu lösen jetzt

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

Folgen über zwei Befehle, die Datei hinzufügen, bis alle Konflikte gelöst werden. nun geändert Master in Ihrer Branche zusammengeführt und schob zum Server < < Ihre Branche Sie jetzt brauchen, master-Zweig aktualisieren

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

Überprüfen HINWEIS: Wenn Rebasing, wenn Ihre aktuelle Änderungen überschrieben sind und Sie nicht wollen, um fortzufahren laufen, -

$git rebase --abort 

Während fusionieren tun/re, wenn eine Meldung Fenster Ihre Erklärung verpflichten schreiben erscheinen, es kein entkommen gibt ... etwas schreiben und dann tun die folgenden-

$git reset --hard HEAD~1 

[Dieser Befehl wird der aktuelle Commit Kopf auf 1-Pegel zurückgesetzt, was in der letzten Zusammenführung passiert zufällt]

0

Wenn Sie Probleme sehen die Git Staging-Ansicht oder die Staging-Ansicht zeigt das falsche Repository Klicken Sie dann auf das Dreieck neben dem Rebase-Symbol in der Symbolleiste und klicken Sie auf Abbrechen.

Click here