2014-12-11 9 views
15

Niedawno włączyłem diff3 i teraz łatwiej jest rozwiązać konflikt.Czy diff3 powinien być domyślnym stylem konfliktu w git?

Poprzednio w niektórych przypadkach musiałem sprawdzać dziennik, aby zobaczyć, dlaczego ludzie zrobili to i tamto, aby przeprowadzić scalenie. Ale z diff3 informacja jest wyświetlana w jednym miejscu

<<<<<<< HEAD 
THIS IS USEFUL 
||||||| merged common ancestors 
This is useful 
======= 
This is really useful 
>>>>>>> c2392943..... 

Z tego możemy łatwo zobaczyć, że wynik powinien być „to jest naprawdę pożyteczne”

Zastanawiam się, czy istnieje jakikolwiek minusem diff3? Dlaczego nie jest to domyślne zachowanie git?

+1

Myślę, że to absolutnie powinno być domyślne. Świetny i dobrze ilustrujący przykład, nawiasem mówiąc. – Wildcard

+0

Nie można się zgodzić na więcej. –

Odpowiedz

12

Dla innych czytelników (i from this article):

git posiada opcję wyświetlania scalić konfliktów w formacie diff3 (domyślnie wyświetla tylko dwa pliki mają być scalone). Można włączyć go tak:

git config --global merge.conflictstyle diff3 

Naprawdę nie ma powodu nie powinien umożliwić styl diff3, ponieważ często potrzebujemy przodka, aby określić, co jest poprawne seryjnej.

Zostało wprowadzone fairly early (2008), i domyślam się, że nie jest to ustawienie domyślne, ponieważ domyślna różnica uniksowa nie jest wyświetlana jako trójdrożna różnica.


Jak wspomniano in this thread, jeśli chcesz uruchomić tego polecenia bez ustawiania config, dzięki czemu można przełączać się pomiędzy normalnymi dyferencjału i diff3s łatwo jest to możliwe w jednym konkretnym przypadku:

Jeśli konflikt jest oznaczone w indeksie (czyli państwo jesteś w konfliktujących po scaleniu, ale zanim zaznaczyć ścieżkę jako rozwiązany), można zrobić:

git checkout --conflict=diff3 <path...> 

Należy zauważyć, że faktycznie sprawdza zawartość indeksu do drzewa roboczego, więc wszelkie zmiany wprowadzone do kopii drzewa w stanie konfliktu zostaną nadpisane.

+1

Dzięki za odpowiedź. Zastanawiam się, dlaczego nie ustawiają go domyślnie w najnowszych wersjach git? – Pham

+0

Myślę, że ze względu na pochodzenie Linuksa Git: domyślnie, różnica z Git zachowuje się jak diff linuxa. – VonC

+0

Twoja pierwsza linia mówi "z tego artykułu", ale nie ma linku. – Wildcard

Powiązane problemy