Kurs Git - Aktualizacja gałęzi przed scaleniem

W poprzednim rozdziale opisaliśmy dwie strategie mergowania kodu. Zaznaczyliśmy przy tym, że często spotykaną sytuacją jest wrzucanie przez programistę kodu do brancha, np. master, już po tym jak na jego podstawie stworzyliśmy nowego brancha, np. feature/Add-user-management-skeleton. Wtedy, w momencie mergowania zmian do brancha master, zostaje uruchomiona strategia recursive merge.

Odrzucenie push-a

Musimy jednak pamiętać, że najpierw pracujemy na lokalnym repozytorium, więc jeśli kolejność wydarzeń była taka:
  • stworzenie lokalnego brancha feature/Add-user-management-skeleton na podstawie lokalnego brancha master
  • wrzucenie kodu na zdalnego brancha master przez innego programistę, wykonane w trakcie naszej pracy na lokalnym branchu feature/Add-user-management-skeleton
  • zmergowanie zmian z naszego lokalnego brancha feature/Add-user-management-skeleton do lokalnego brancha master
wówczas nie nastąpi recursive merge, a wykonany zostanie fast forward. Stanie się tak dlatego, że na nasz lokalny branch master nic nie wie o tym, że jego zdalny odpowiednik został w międzyczasie zmieniony. Realizacja takiego scenariusza zakończy się tym, że w momencie wypychania zmian do zdalnego master-a spotkamy się z odrzuceniem tej operacji.

Innymi słowy wykonując komendę push otrzymamy komunikat zwrotny:
...
! [rejected]    master -> master (non-fast-forward)
error: failed to push some refs to...
...

Aktualizacja brancha

Po otrzymaniu powyższego błędu musimy wykonać operację "naprawczą", polegającą na zaktualizowaniu lokalnego brancha master zmianami ze zdalnego odpowiednika:
git pull
Pamiętajmy, że komenda pull tak naprawde wywołuje najpierw komendę fetch, a następnie merge co powoduje, że dane z zewnętrznego master-a są pobierane oraz mergowane do lokalnego brancha master, czyli tego do którego wcześniej już zmergowaliśmy swojego brancha feature/Add-user-management-skeleton. Wykona się tu więc recursive merge, tyle że inicjatorem tego procesu nie będą nasze zmiany, a zmiany przychodzące z zewnętrznego master-a.

Reasumując, wykonanie komendy pull spowoduje zaktualizowanie kodu w naszym repozytorium, a wtedy będzie już możliwe wykonanie komendy wrzucającej:
git push
W tym momencie zmiany zostaną wgrane na zdalnego master-a już bez żadnego problemu.

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .


Pozycjonowanie stron: Grupa TENSE