2015-12-24 34 views
7

Używamy git rebase i prowadzimy do konfliktów, w których musimy użyć --continue po rozwiązaniu konfliktów łączących. Jednak jestem przyzwyczajony do ręcznego uruchamiania zatwierdzenia po rozwiązaniu konfliktów. Ponieważ nie widzimy dodatkowych zatwierdzeń po zakończeniu całej reorganizacji, w którym momencie zatwierdza się rozwiązania konfliktów?Podczas Git Rebase, w którym momencie podejmowane są rozstrzygnięcia konfliktów przy użyciu --continue

Odpowiedz

2

Wszelkie konflikty rozstrzygania, które wystąpią podczas rebase, będą należeć do nowego zatwierdzenia tworzonego przez rebase.

więc bezpośrednią odpowiedź na pytanie:

którym momencie rozwiązywania konfliktów uzyskać popełnione?

... jest po --continue, ale skutecznie po zakończeniu całego polecenia rebase i wskaźnik gałęzi jest zaktualizowany.

Z perspektywy outsidera, gałąź, która została zmieniona, wygląda tak, jakby praca została wykonana natychmiast po rozgałęzieniu i nie wymagała rozwiązywania konfliktów, ponieważ praca została wykonana nad tą zawartością.

to czasem lepiej scalania ponieważ popełnić historia może być łatwiejsze do rozumu o tym, czy nie ma tak wielu (ewentualnie) bez znaczenia scalania-popełnia

2

Pomaga myśleć o rebase jak tylko pisanie nowego sekwencja zatwierdzeń, ponownie aplikując remisje na początku nowej głowy. Jeśli każde zatwierdzenie może być zastosowane automatycznie, świetnie, spraw, aby tak się stało. Jeśli zatwierdzenie nie może zostać zastosowane automatycznie, oznacza to, że indeks pozostaje w najlepszym stanie, ponieważ może być reprezentowany, z odpowiednio oznaczonymi plikami powodującymi konflikt, po tym, jak powiesz mu, aby kontynuował używanie bazy, postępuj w następujący sposób:

Jeśli git rebase --continue znajduje niezatwierdzone zmiany w indeksie, zakłada, że ​​zmiany stanowią rozstrzygnięte konflikty i zatwierdza je. Monituje o komunikat zatwierdzenia i używa go dla tego zatwierdzenia, a następnie wznawia ponowne tworzenie pozostałych zatwierdzeń, po tym, który spowodował konflikt.

Jeśli git rebase --continue nie widzi żadnych elementów niezaakceptowanych, zakłada, że ​​konflikt został ręcznie rozwiązany i zatwierdzony, więc po prostu kontynuuje działanie z pozostałymi zatwierdzeniami w bazie danych.

+0

wszystko ma sens z wyjątkiem tej części: "Wyświetla komunikat zatwierdzenia i używa go dla tego zatwierdzenia". Nie otrzymujemy monitu o komunikat zatwierdzenia. Dzięki za pomoc –