Po zakończeniu pracy na temat branży, I połączyły gałąź temat do pana jak następuje:Git: przebazowania skonfliktowany scalającej
o---*---o---o topic
/ \
o---o---o---*---o---o---+ master
zobowiązuje oznaczone „*” zmodyfikowane ten sam kod, stąd łączenie prowadzenie aby scalić konflikty, które zostały rozwiązane w zatwierdzeniu scalenia (oznaczone "+").
Chociaż połączone i rozwiązane konflikty, mój kolega popchnął nowych zobowiązuje się do opanowania (oznaczona jako „N”), w wyniku następującej historii:
o---*---o---o topic
/ \
o---o---o---*---o---o---+ master
\
n---n origin/master
Teraz, spychając moje lokalnej oddział główny oczywiście prowadzi do błąd, jak to nie fast-forward-Push, więc mam dwie możliwości:
wyrzucić moją pracę, master reset do pochodzenia/master i przerobić seryjnej. Chciałbym tego uniknąć, ponieważ będę musiał rozwiązać konflikty od nowa.
Zmień wzorzec na początek/wzorzec i wciśnij. Oto mój problem: wykonanie tego rebase (nawet przy użyciu przełącznika
-p
) nie działa płynnie, zatwierdzenie scalania pokazuje te same konflikty ponownie, mimo że nowe zatwierdzenia ("n") nie zmieniły niczego dotkniętego przez gałąź tematu . Więc będę musiał ponownie rozwiązać konflikty podczas rebase i będzie miało taki sam wynik jak w przypadku opcji 1.
Co chciałbym osiągnąć jest przebazowania scalanie popełnić „+”, bez konieczności rozwiązywania ponownie konflikty:
o---*---o---o-------- topic
/ \
o---o---o---*---o---o---n---n---+ master & origin/master
Edit:
przełącznik rerere jest włączona, ale nie wydaje się, aby pomóc w jakikolwiek sposób; czy muszę ustawić coś więcej niż ustawienie config.rerere na true, aby naprawić mój problem?
Edit 2:
scalanie scalenie-commit („+”) do pochodzenia/master będzie także pracować (jak zaproponowano w komentarzach i odpowiedzi), ale doprowadzi do pewnego rodzaju brzydkiej historii, która ja” Chciałbym tego uniknąć, ponieważ tylko jeden commit został zatwierdzony.
Możesz także cofnąć pochodzenie/wzorzec przed połączeniem z nim nowego wzorca. – ScayTrase
@ScayTrase Byłoby to możliwe, ale prowadziłoby to do jakiejś brzydkiej historii; Wolałbym czyste rozwiązanie z jednym zatwierdzeniem scalania tylko – rhabarbersaft
Niestety, nie ma realnego wyjścia z tego: bez względu na to, którą z dwóch opcji wybierzesz, najprawdopodobniej będziesz musiał rozwiązać konflikty od nowa. Jeśli spodziewasz się, że znajdziesz się w tej samej sytuacji w przyszłości, prawdopodobnie powinieneś rozważyć aktywowanie ['rerere'] (http://stackoverflow.com/questions/25670519/git-rebase-preserve-merges-fails/ 25671230 # 25671230). – Jubobs