2016-04-11 5 views
1

Ich versuche, über meinen Schatten zu springen und endlich Git auf einer grundlegenden Ebene zu lernen. Wie unzählige Anfänger vor mir stieß ich auf den gefürchteten Fehler "egit rejected non-fast-forward", wenn ich versuche, nach dem Zusammenführen in den Remote-Änderungen zu drücken und "als fusioniert" zu markieren.Richtiger Push zu modifiziertem Remote-Repository-Workflow mit Egit

Es scheint, als ob ich bereits eine Lösung für dieses Problem gefunden habe, aber es ist umständlich und nicht kompatibel mit dem Eclipse-Vergleichseditor. Ich mache es wie folgt aus:

  1. meine Änderungen Push - bewirkt, dass die „egit abgelehnt nicht vorspulen“ Fehler
  2. Pull Änderungen - Der Vergleichs Editor enthält nun <, = und> Markierungen. Ich kann Änderungen nicht bequem vergleichen und schieben, da die rechte Seite des Vergleichseditors leer ist und die linke Seite meine Änderungen und die entfernten widersprüchlichen Änderungen übereinander enthält, was ziemlich nutzlos ist.
  3. Mühsam die Teile, die ich will, durch manuelle Bearbeitung des Textes auswählen.

Benutze ich den richtigen Weg?
Gibt es eine Möglichkeit, beide Seiten des Vergleichseditors richtig zu verwenden?

Ich möchte meine Version sehen, die gedrückt wird, und es ist zu jeder Zeit während der Zusammenführung Unterschiede zu der aktuellen Remote-Version.

Antwort

1

Ich bin nicht vertraut mit Egit, aber es klingt wie Sie mit einem Merge-Konflikt beschäftigen. Habe ich recht, wenn ich davon ausgehe, dass jemand anderes auch Push-Zugriff auf die Branche hat, an der Sie gerade arbeiten? Was wahrscheinlich passiert ist, dass sie neue Änderungen in den Zweig geschoben haben, was die Ablehnung verursacht. Und indem Sie ziehen, versuchen Sie einige widersprüchliche Änderungen zusammenzuführen, die Sie lösen müssen. Here ist eine bessere Erklärung für das gleiche Problem.

Die schlechte Nachricht ist, dass Zusammenführungskonflikte immer manuell gelöst werden müssen. Die gute Nachricht ist, dass es aussieht, als ob eag ein Merge-Tool zur Verfügung stellt, um diese Konflikte zu lösen. This egit wiki page kann Ihnen helfen, das gesuchte Vergleichstool zu finden. Wählen Sie im Grunde nur die Datei mit Konflikten aus und wählen Sie dann Team> Merge Tool .


Wenn das nicht funktioniert, können Sie immer lösen vertrauens Konflikte fusionieren nur die git verschmelzen Marker unter Verwendung von (<,> und =). Read this für eine detaillierte Erklärung, wie diese in Git verwendet werden. Grundsätzlich wird alles unter <<< und über === Ihre Änderungen sein. Der Code unter === und über >>> wird ihre Änderungen sein. Und Sie müssen entweder auswählen, welche Seite Sie möchten, oder Sie können sie noch weiter anpassen. indem Sie alles löschen und den Code selbst neu schreiben.

Hier ist ein Beispiel. Dies kann bei der Lösung eines Zusammenführungskonflikts auftreten. Oben sehen Sie das Commit bei Ihrem lokalen HEAD, Ihrer Version des Commits. Und der Boden unter den === zeigt die bei origin/master begehen, die Version, die Sie gerade in Mitleidenschaft gezogen.

<<<<<< HEAD:test.html 
<h1>This is my version</h1> 
====== 
This is their version 
>>>>>> origin/master:test.html 

zu halten nur Ihre Version, können Sie genau den gesamten Block mit diesem ersetzen. Es ist, als ob die Pfeile und Gleichheitszeichen Ihnen eine Wahl geben. Willst du die Spitze (deine) oder die Unterseite (ihre)?

<h1>This is my version</h1> 

Alternativ möchten Sie vielleicht eine Kombination aus beidem. Hier würden Sie Ihr HTML-Tagbehalten, aber ihren Text verwenden.

<h1>This is their version</h1> 

Ich hoffe, das hilft Ihnen, fühlen sich wohler mit Konflikten verschmelzen zu lösen. Wenn Sie mehr über Git erfahren möchten, empfehle ich immer git-scm.

Verwandte Themen