Czy są jakieś wady włączania rerere git?

107

Czytałem różne rzeczy o funkcji rerere git i rozważam jej włączenie. Ale nie widziałem nikogo, kto wspominał o możliwych problemach, które mogą się pojawić podczas korzystania z niego. Muszę założyć, że jest wada lub prawdopodobnie byłby domyślnie włączony. Czy jest więc jakaś wada włączania rerere? Jakie potencjalne problemy może to spowodować, a które inaczej nie wystąpiłyby?

Ryan C. Thompson
źródło
Gdy automatyczne ponowne odtwarzanie jest włączone i stosuje poprzednią rozdzielczość, czy wyświetla komunikat? Jeśli tak, jak to wygląda? TIA!
joeytwiddle
1
@joeytwiddle, zgodnie z tym artykułem , miałoby to postać,Resolved 'index.html' using previous resolution.
sampablokuper

Odpowiedzi:

69

Jeśli wykonasz scalanie niepoprawnie, a następnie odrzuć je, a następnie wykonaj „to samo” scalenie ponownie, znowu będzie nieprawidłowe. Możesz jednak zapomnieć o nagranej rozdzielczości. Z dokumentacji :

git rerere forget <pathspec>

Spowoduje to zresetowanie rozwiązań konfliktów, które zostały ponownie zarejestrowane dla bieżącego konfliktu w programie <pathspec>.

Uważaj, aby używać go na określonych ścieżkach; nie chcesz wszędzie wysadzać wszystkich nagranych rozdzielczości. ( forgetbrak argumentów został wycofany, aby uchronić Cię przed robieniem tego, chyba że wpiszesz, git rerere forget .aby wyraźnie o to poprosić).

Ale jeśli nie pomyślisz o tym, możesz łatwo umieścić to nieprawidłowe połączenie w swojej historii.

MatrixFrog
źródło
13
Dlatego rererenadal pozostawia pliki z konfliktami oznaczonymi jako nie scalone, więc przed zatwierdzeniem trzeba je ręcznie dodać (miejmy nadzieję, po ich sprawdzeniu / przetestowaniu). Zawsze możesz użyć tej funkcji, git checkout -m <path>aby sprawdzić oryginalną wersję będącą w konflikcie i ponowić rozwiązanie, jeśli zajdzie taka potrzeba.
Cascabel
1
To miałoby sens! Wygląda na to, że potrzebujesz nowego aliasu.
Cascabel
5
Myślę, że to jest prawdopodobnie główny problem. Włączenie rerere dodaje jeszcze jeden sposób na nieoczekiwane wkradanie się błędów. Scalanie, które przerwiesz (a raczej cofniesz, usuwając je z historii) może nadal powrócić i prześladować Cię później. Zasadniczo wprowadza drugi mechanizm historii, który jest prostopadły do ​​rzeczywistego wykresu historii.
Ryan C. Thompson
3
@RyanThompson Przerwane scalanie nie wpływa na ponowne odtworzenie. (Często chciałbym, żeby to zrobili - czasami przerywałem scalanie, ponieważ źle je ustawiłem, a potem musiałem wykonać dokładnie te same rozwiązania, gdy ustawiłem je dobrze). Jeśli chodzi o usuwanie scalenia z historii, dlaczego miałbyś kiedykolwiek Zrób to?
Marnen Laibow-Koser
40

Jak wspomina JC Hamano w swoim artykule „ Fun with rerere

  • Rerere pamięta, w jaki sposób zdecydowałeś się rozwiązać konfliktowe regiony;
  • Rerere pamięta także, jak wychodziłeś poza obszary objęte konfliktem, aby dostosować się do zmian semantycznych;
  • Rerere może ponownie wykorzystać poprzednie rozwiązanie, nawet jeśli łączyłeś dwie gałęzie o innej zawartości niż ta, którą rozwiązałeś wcześniej .

Nawet osoby, które używają Rerere przez długi czas, często nie zauważają ostatniego punktu.

Więc jeśli aktywujesz się rererena zbyt szerokich treściach, możesz skończyć z zaskakującą lub mylącą rozdzielczością scalania z powodu ostatniego punktu.

VonC
źródło
15
Konfliktowe porcje wciąż muszą pasować; dość trudno jest dać fałszywie pozytywny wynik.
Cascabel
3

Mam włączoną globalną rerere. Naprawdę nie zauważyłem żadnych problemów i zwykle wydaje się, że ułatwia mi to życie.

Marnen Laibow-Koser
źródło
4
To samo tutaj. Żadnych problemów przez ponad 2 lata użytkowania.
Andrey Tarantsov
3

Wybrałem zmianę (w gitk), która zawierała tylko plik binarny. Cherrypick nie powiódł się z powodu konfliktu (co jest naturalne) i rozwiązałem ten konflikt, zachowując najlepszy wybór. Zaskoczyło mnie później, że w innej gałęzi z rebased moje biblioteki dll nie zachowują się - tylko po to, aby odkryć, że nie zostały przeniesione do rebase jako (spekuluję) automatyczne rozwiązywanie konfliktów. Jest to więc jedyny przypadek, w którym spotkałem (po ponownym włączeniu) wpadanie w sprzeczne z intuicją (choć jestem pewien, że jestem całkowicie spójny) zachowanie.

Mr_and_Mrs_D
źródło
1
Leczenie:git rerere forget path/to/compiled/bin.dll
Mr_and_Mrs_D
W pierwotnym przypadku konflikt nie dotyczył wybierania wiśni, ale zmiany bazy, ale nie sądzę, że ma to znaczenie
Mr_and_Mrs_D