Warum muss ich zum beheben des Konflikts über und über?
Wenn ich git rebase branch1
in meinem branch1-local
bekomme ich Konflikte. Ich lösen den Konflikt, tun git add <conflicted-add>
tun, und dann git rebase --continue
als git-fragt mich, zu tun. Nach, dass ein neuer commit angewendet wird. Ein neuer Konflikt auftaucht. Aber ist der gleiche Konflikt wieder! die gleiche Datei!. Ich es wieder tun, git add
, die git rebase --continue
, und alles wiederholt sich wieder, bis ich tun, wiederholen Sie diese Schritte für jedes commit wird zurückgesetzt auf.
Warum Stellungswechsel hat Sie mich wiederholen die gleichen Konfliktlösung immer und immer wieder?
- Ich habe es nie benutzt, ich habe kaum Lesen Sie die Dokumentation, aber werfen Sie einen Blick auf
git rerere
, AFAIK wird verwendet, um den "record" - Konfliktlösungen und vermeiden, Sie zu wiederholen. Werfen Sie einen Blick auf stackoverflow.com/q/5519244/236871 für die üblichen Fallstricke dieser Funktion. - Haben Sie jemals herauszufinden, warum dies passiert ist? Ich hatte andere Menschen, die Berichterstattung, die gleiche Sache, und ich möchte in der Lage sein, zu rekonstruieren, wie eine situation, wo ich eine Bewerbung die genau die gleiche Konfliktlösung mehrmals während eines rebase.
- ja, die Lösung war nie verwenden
rebase
wieder.pull
,merge
und Entschlossenheit, mitadd
ist alles, was Sie jemals brauchen sollte - Hey man, don ' T hate on Stellungswechsel. Das Zeug ist golden.
- Stellungswechsel im Grunde saugt, weil es ändert die Geschichte und schafft, verpflichtet, die entsprechen nicht jeder Staat, der jemals existiert tatsächlich in Entwicklung (und wurden daher nie getestet). Drop it ist eine gute Wahl. 🙂
- squash-und merge-klar überlegen ist 🙂
- Und
merge --no-ff
überlegen ist, denn es bewahrt die Geschichte noch besser. Auch, verwenden Sie im Allgemeinengit mergetool
Konflikte zu lösen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie wollen, ist
git rerere
welche Datensätze Konfliktlösungen für Sie. Die beste Einführung zu diesen, die ich gesehen habe, ist jetzt Teil der Git-Buch, Kapitel Werkzeuge. In der Praxis, wenn Sie ein Stellungswechsel, Sie werden am Ende stoppen nach wie vor aber müssen Sie nur die merge-Konflikt gelöst bleibt danngit add
weiter.Sollten Sie nicht sein immer der gleiche Konflikt immer und immer wieder. Rerere wird dir nicht helfen hier. Es bedeutet einfach, dass die codebase, die Sie versuchen, zu wiederholen verpflichtet ist so unterschiedlich, dass jedes Begehen braucht deine Hilfe, um Sie einzustellen. Dies ist einer der Gründe, die zu Gunsten merge über Stellungswechsel. Stellungswechsel sollte nur verwendet werden, wenn notwendig, und die nicht Teil Ihres regulären workflow. Rerere wird helfen, viel mehr in eine Zusammenführen/reset-Typ workflow. Hier ist mein workflow, vermeidet rebasierung: http://dymitruk.com/blog/2012/02/05/branch-per-feature/
Einen Weg, um zu lindern einige der Schmerzen, ist die Verwendung einer smart-merging-Programm wie Beyond Compare. Es ist die syntax, die bewusst und lösen eine ganze Reihe von Konflikten, die Git wird (zu Recht) weigern, das zu tun für Sie. Viele Male, diese tools, wenn Sie aufgerufen wird, nicht selbst öffnen, UI, das Problem zu lösen und lassen Sie Ihre
git mergetool
Befehl weiterhin auf den nächsten Konflikt. Denken Sie daran, "das Vertrauen mergetool exit-code" auf true.