GitHub - jak to zadziała?

0

Uczę się dopiero korzystania z GitHuba, chciałbym napisać, jak widzę działanie i prosiłbym o skomentowanie, czy dobrze rozumuję, i o rozwianie wątpliwości.
Chodzi mi wyłącznie o sprawę współdziałania wielu użytkowników nad jednym kodem - rozumiem, że odbywać się to będzie poprzez Forka - który danemu użytkownikowi skopiuje kod, a ten później go odeśle.
Ale co się stanie w sytuacji, którą opiszę niżej.

Na linii master znajduje się plik. Jeden z użytkowników skopiuje go do siebie i zacznie dopisać coś do pliku.
Ale w tym momencie także inny użytkownik także ten sam plik z mastera skopiuje do siebie i zacznie go modyfikować.
Obaj użytkownicy odeślą z powrotem zmodyfikowany plik.
Co się stanie, gdy będę chciał połączyć obecny plik z tymi dwoma, które odesłali użytkownicy? Idealną opcją byłoby to, że oba pliki ładnie złączą się i wszystko będzie działać, ale czy tak się stanie? Rozumiem, że to pewnie zależy od sytuacji, bo gdy założymy taką:

  1. Łączę najpierw plik z mastera z plikiem od 1 użytkownika - powiedzmy, że zmodyfikował linię 20.
  2. Łączę plik teraz z plikiem od 2 użytkownika, który tą samą 20 linię potrzebuje do działania w formie, jaka była w standardowym masterze - czyli nie modyfikował jej.
    Czy w takiej sytuacji jedyną opcją jest ręczne modyfikowanie kodu tak, by działało wszystko poprawie? Czy github zasygnalizuje taki przypadek, że złączenie może przynieść nieoczekiwany rezultat?
1

Fork to skopiowanie całego repo do innego repo. Pracuje się na osobnych branchach, np master i z mastera są tworzone 2 branche o przykładowych nazwach branch1 i branch2, i na tych branchach pracują userzy a potem robią pull requesta do mastera łącząc swoje zmiany.

Masz 2 możliwości. Jeśli modyfikują w tym pliku inne linie to się wszystko połączy, jeśli tę samą to pierwszy pull request się złączy ładnie, drugi wyrzuci konflikt i wtedy trzeba pobrać brancha master do sibie, zmergować go do brancha na którym się pracuje wtedy lokalnie też pokaże się informacja o konflikatach. Rozwiązujesz te konflikty, robisz commita i pusha i wtedy ponownie pull request i już wszystko się połączy dobrze.

1

Jeśli użytkownicy faktycznie ZMIENILI tą samą linię to git wykryje konflikt przy merge i każe go ręcznie rozwiazać, tzn user musi zdecydować co zrobić.

1

screenshot-20170425151115.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1