Git-Rebase: Konflikte blockieren den Fortschritt
Habe ich ein git-Zweig (v4 genannt), wurde vom master erst gestern. Es gab ein paar Veränderungen zu meistern, das möchte ich, um in die v4. Also, in v4, ich habe versucht zu tun, ein rebase von "master" und " Datei-hält Schrauben Dinge: eine one-line-text-Datei, enthält die Versionsnummer. Diese Datei ist app/views/common/version.txt
die vor dem Rebase enthält folgenden text:
v1.4-alpha-02
Hier ist, was ich Tue:
> git rebase master
First, rewinding head to replay your work on top of it...
Applying: new version, new branch
error: patch failed: app/views/common/version.txt:1
error: app/views/common/version.txt: patch does not apply
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging app/views/common/version.txt
CONFLICT (content): Merge conflict in app/views/common/version.txt
Failed to merge in the changes.
Patch failed at 0001 new version, new branch
When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".
Den version.txt
sieht nun wie folgt aus:
<<<<<<< HEAD:app/views/common/version.txt
v1.4-alpha-02
=======
v1.4-alpha-01
>>>>>>> new version, new branch:app/views/common/version.txt
So, ich Räume es auf und es sieht jetzt wie folgt aus:
v1.4-alpha-02
und dann habe ich versucht zu führen: zuerst versuche ich eine commit:
> git commit -a -m "merged"
# Not currently on any branch.
nothing to commit (working directory clean)
Kein Glück gibt. So, ich habe versucht, die Datei hinzufügen:
git add app/views/common/version.txt
Keine Antwort. Keine Nachrichten sind gute Nachrichten, denke ich. So, ich versuche weiter zu:
> git rebase --continue
Applying: new version, new branch
No changes - did you forget to use 'git add'?
When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".
Es ist an dieser Stelle, nach der Laufenden Runde und Runde mit dieser, ich bin schlug meinen Kopf vom Schreibtisch.
Was ist denn hier Los? Was mache ich falsch? Kann jemand mich gerade?
BEARBEITEN - für unutbu
Ich habe die Datei, wie Sie vorgeschlagen und bekomme den gleichen Fehler:
> git rebase master
First, rewinding head to replay your work on top of it...
Applying: new version, new branch
error: patch failed: app/views/common/version.txt:1
error: app/views/common/version.txt: patch does not apply
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging app/views/common/version.txt
CONFLICT (content): Merge conflict in app/views/common/version.txt
Failed to merge in the changes.
Patch failed at 0001 new version, new branch
When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".
InformationsquelleAutor der Frage Max Williams | 2010-10-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stieß ich auf ein ähnliches problem mit einem Stellungswechsel. Mein problem verursacht wurde, da einer meiner commit nur eine Datei geändert, und bei der Auflösung, habe ich verworfen, die änderungen in diesem commit. Ich war in der Lage mein problem zu lösen, indem Sie das überspringen der entsprechenden commit (
git rebase --skip
).Können Sie dieses problem reproduzieren, in ein test-repository. Erstellen Sie zunächst das repository.
Dann Begehen die original-Inhalte
version.txt
im master.Erstellen der
v4
Zweig und ändern Sie den Inhaltversion.txt
.Gehen Sie zurück zu
master
und ändern Sie den Inhaltversion.txt
so, dass es ein conflit während des rebase.Wechseln Sie zurück zu
v4
Zweig und versuchen, Stellungswechsel. Es schlägt mit einem conflit inversion.txt
als geplant.Wir den Konflikt lösen, indem Sie die
master
Inhaltversion.txt
. Wir fügen die Datei, und versuchen weiterhin unseren Stellungswechsel.Scheitert es ! Mal sehen, was änderungen
git
denke, es ist in unser repository.Ah Ah, es gibt keine änderung. Wenn Sie Lesen, im detail die vorherigen Fehlermeldung
git
sagt uns dies und das empfohlengit rebase --skip
. Er erzählte uns, "Wenn es nichts mehr zu Bühne, sind die Chancen, dass etwas anderes bereits die gleichen änderungen, möchten Sie vielleicht überspringen Sie diesen patch." Also wir lassen gerade den commit und der Stellungswechsel gelingt.Wort der Vorsicht: Bitte beachten Sie, dass
git rebase --skip
vollkommen fallen die commitgit
versucht, Stellungswechsel. In unserem Fall sollte dies in Ordnung sein, dagit
ist, beschwert dies ist ein leeres Begehen. Wenn Sie denken, dass Sie verloren haben, ändert einmal den Stellungswechsel abgeschlossen ist, können Siegit reflog
zu Holen Sie sich die commit-id des Repositorys, bevor Sie den Stellungswechsel, und verwenden Siegit reset --hard
um Ihr depot wieder in diesem Staat (dies ist eine weitere destruktive operation).InformationsquelleAutor der Antwort Sylvain Defresne
Zitiert von hier: http://wholemeal.co.nz/node/9
InformationsquelleAutor der Antwort Bijou Trouvaille
Ändern app/views/common/version.txt zu
Zu diesem Zeitpunkt im Stellungswechsel, denken Sie daran, dass Sie auflösen von Konflikten beim Zusammenführen, um zu zeigen das Fortschreiten der nicht-master Zweig.
So, in der rebasierung von
zu
den Konflikt, den Sie auflösen, ist in so erstellen Sie Eine* auf das Thema Niederlassung.
Also nachdem ich
git rebase --abort
die Befehle werden sollteInformationsquelleAutor der Antwort unutbu
Hier sind einige Ideen:
rm -rf .git/rebase-apply
InformationsquelleAutor der Antwort Adam Monsen
Diese Fehlermeldung ist das Ergebnis Ihrer
git commit -a -m "merged"
. Wenn Sie nur fix die Datei, dann rungit add <file>
undgit rebase --continue
es sollte funktionieren.git rebase --continue
zu tun versucht, eine commit -, sondern finden, dass es keine ausstehenden änderungen zu Begehen (weil Sie Sie begangen wurden bereits).InformationsquelleAutor der Antwort twalberg
Das Verhalten, das Sie hier sehen ist nicht das, was ich erwarten würde von einem typischen Stellungswechsel nur mit diesem Konflikt. Erwägen Sie die Verwendung einer separaten Zweig zu diesem Stellungswechsel (besonders, wenn Sie bereits geschoben, die verpflichtet aus der Ferne, Sie sind schnell Spedition). Auch
git mergetool
können hilfreich sein bei der Lösung von Konflikten und denken Sie an das Problem einergit add
.In diesem minimal-Beispiel, das rebase funktioniert wie erwartet. Können Sie ein Beispiel geben, das zeigt das Verhalten, das Sie beobachten?
InformationsquelleAutor der Antwort Ben Taitelbaum