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ą.