Całość stanu plików masz w jakiejś wersji na branchu.
Masz historię.
Masz loklany stan u różnych ludzi na dyskach i w lokalnych repo na poszczegółnych komputerach.
Masz jakieś źródło prawdy - 1 konkretny komputer na którym jest obowiazująca wersja.
Jeśli są wysłane 2 zmiany które da sie pogodzić - zmiany w innych pikach albo plik tekstowy i zmiany w innym miejscu piku to systemy starają sie zanieść te zmiany możliwie bezboleśnie.
Jeśli nie są w stanie wyślą ci info - jest konflikt - ręcznie określ jaki ma być skutek naniesienia obu zmian.
W przypadku plików binarnych praktycznie każda zmiana musi być fixowana ręcznie. Kiedyś blueprinty były binarne więc wszselkie niekompatybline zmiany oznaczały że ten kto niezdążył musiał pobrać nową wersję i przeklikać wszytko jeszcze raz. Może coś poprawili bo tekstowe bluepriny byłyby dużo lepsze, ale nie wiem czy to poszło w te stronę… chyba nie…
Generalnie do plików tekstowych Git >>>> cokolwiek.
Naprawdę do kodu to inna jakość życia.
Super tanie branche + dobrej jakości automatyczne merge, poezja.
Ale git nie jest prosty w użyciu, trzeba się poduczyć.
I przy plikach binarnych git nie specjalnie pomaga.
Nawet trochę sie nie nadaje i są rozszerzenia dla gita żeby działał wydajniej jak jest dużo plików binarnych.
Checkoutowanie w perforce (p4) że się ptaszek wyświetla.
To miłe i pomaga w synchronizacji,
ale tak naprawdę nic nie oznacza bo i tak można to wrzucić…
a tu ktoś zaptaszkuje ale jednak się rozmyślił i w sumie to ten ptaszek tylko myli
Itd itp
I jak 2 osoby siedzą na mapie to i tak będą miały konflikt.
Wsparcie edytora trochę pomaga unikać konfliktów
ale jest mnóstwo scenariuszy gdzie nie wystarczy.
(Btw nazewnictwo jest tragiczne, bo w gicie chekout oznacza pobranie brancha,
a w p4 zaklepanie sobie pliku
w ogóle podobne rzeczy mają inne nazwy
a czasem kompletnie różne rzeczy korzystają z tych samych w innych systemach)
I p4 kiedyś przynajmniej nie miał darmowej wersji,
co oznacza że dla małego projektu git albo SVN.
Programistom polecam gita, nawet jako lokalna pomoc jeśli główne repo jest na czymś innym.
Do binarek p4 albo SVN mogą ułatwić pracę i nie będzie trzeba uczyć nie programistów gita.
Przy każdym projekcie trzeba sie nauczyc pracować z kontrolą wersji
- jakiś logiczny sposób zarządzania branchami
- częsta synchronizacja z najnowszą wersją
- struktura projektu tak żeby ograniczać sytuacje gdzie 2 osoby sobie na wzajem psują pracę