Ich bin ein paar Mal in diese Situation geraten und bin gespannt wie andere damit umgehen.Git Rebasing Konflikte mit sauberen Zweig und wie man damit umgehen?
Lassen Sie uns sagen, ich habe zwei Zweige auf dem Remote-Server, der wie folgt aussehen:
branchA: a123-->b123-->c123-->e123-->f123
branchB: a123-->d123-->b123-->c123
Lasst uns annehmen, dass d123
vor b123
und c123
auf branchB
begangen wurde. Irgendwann müssen wir branchA
auf branchB
rebasieren, weil es Arbeit hat, die branchB
benötigt. Ein Kollege macht das, räumt die Konflikte auf, alles ist gut und branchB
wird zurück auf den Remote-Server geschoben. Meine lokale Niederlassung ist jetzt sauber und sieht etwas wie branchB
verwendet aussehen:
local branchB: a123-->d123-->b123-->c123
Natürlich muss ich rebase was von branchB
in dem Remote-Server ist auf meinem lokalen branchB
so habe ich die Arbeit. Manchmal stoße ich jedoch in eine Situation, in der ich Konflikte in meiner lokalen Filiale habe und Git bittet mich, durch jeden von ihnen zu gehen, da Rebasing normalerweise funktioniert. Das ist, weil ich nicht wirklich die Geschichte von branchA
habe, die von einem Kollegen in branchB
rebased wurde.
Das Problem ist, dass ich weiß, dass die ganze Arbeit, die ich bis zu diesem Punkt gemacht habe, in der entfernten branchB
ist und es keine Konflikte gibt, die tatsächlich behoben werden können. Durch jede von ihnen zu gehen wäre Zeitverschwendung. Ich möchte nur die Geschichte, die auf der Fernbedienung branchB
ist, um meine lokale Geschichte zu ersetzen.
Bei der Suche nach dem Internet scheint es ein paar verschiedene Lösungen für das Problem zu geben, aber ich bin mir nicht ganz sicher, welches ist das beste oder Linus genehmigt, wenn Sie so wollen. Ich bin mir eigentlich nicht sicher, ob ich überhaupt die Antwort gefunden habe, nach der ich suche.
Einige Antworten sagen, dass ich eine Rebase verwenden und die theirs
Option verwenden oder eine andere Strategie auswählen sollte. Ich glaube, einige Antworten sagen, dass die --skip
ist hier angebracht ... Wie auch immer es aussieht git --skip
buchstäblich Skips in einigen Fällen commits. Es sieht auch so aus, als ob die theirs
Option wie git rebase -X theirs
tatsächlich die SHAs für mich in einigen Fällen neu schreibt, was die Geschichte aus dem Gleichgewicht bringt, was ich nicht will.
Also, meine Frage ist, wie würde ich die Geschichte auf meinem lokalen Zweig mit der Geschichte auf dem Remote-Zweig vereinbaren, wenn:
- Alles in meiner lokalen Niederlassung bereits im Remote-Zweig ist?
- Mein Zweig ist sauber, hat keine ausstehenden Änderungen und es gibt wirklich keine Konflikte zu beheben?
- Wirklich alles, was ich will, ist zu ersetzen, was in meinem lokalen Zweig Geschichte mit, was in der Remote-Zweig Geschichte ist?
Dies ist eine interessante Ansatz. Irgendwelche Ratschläge, wie man das sonst macht? – Sethen