Jak poprawnie wykonać git rebase?

0

Z gitem praktycznie mam styczność od niedawna. Otóż na zdalnym branchu zaszła zmiana/update. Pracuję na lokalnym branchu, który jakby nie został jeszcze ''zsynchronizowany'' po tej zmianie na zdalnym. Na swoim branchu mam kilka commitów. Teraz potrzebuję, aby ta zmiana ze zdalnego znalazła się na moim lokalnym. Do tego służy rebase - nie mylę się?

Przykład:

my-branch -> master: merge / pull request
master -> my-branch: rebase

Zgadza się? Jeśli tak, to:

  1. Jak będzie wyglądał rebase?
  2. Co się stanie z lokalnymi commitami?
3

Trochę namieszałeś w tym opisie. każdy branch może być lokalny i zdalny. Zdalny master oznaczany jest zwyczajowo jako origin/master, a lokalny po prostu jako master. Analogicznie to się tyczy każdego brancha. To, co jest już w origin jest źródłem prawdy wszelakiej dla wszystkich członków zespołu. To, co masz lokalnie to tylko twoja sprawa.

Wracając do tematu, jeśli masz swój branch odbity kiedyś od mastera, to najłatwiej zrobić git checkout master, git pull origin master, git checkout moj-branch i git rebase master. W ten sposób masz zsynchronizowany swój master z origin/master oraz wszystkie commity z master obecne w moj-branch. W razie konfliktów, rozwiązać i git add . oraz git rebase --continue.

Rebase przeniesie twoje commity na górę, tak jakbyś właśnie odbił swój branch od aktualnego mastera i w ułamku sekundy stworzył wszystkie swoje commity, nim ktoś inny coś wypushował. Dzięki temu merge do mastera będzie bez konfliktów. Stąd nazwa - twoje commity mają nowy commit bazowy - najświeższy z brancha do którego się rebasujesz. Pamiętaj, że jeśli wypushowałeś już swój branch do origin, to rebase zakończy się katastrofą.

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