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?


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.


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.


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.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.