Używamy git i mamy gałąź master i gałęzie deweloperskie. Muszę dodać nową funkcję, a następnie zmienić bazę zatwierdzeń na master, a następnie wypchnąć master na serwer CI.
Problem polega na tym, że jeśli mam konflikty podczas rebase, nie mogę wysłać do mojej zdalnej gałęzi programisty (na Github) po zakończeniu rebase, dopóki nie ściągnę mojej zdalnej gałęzi. Powoduje to zduplikowane zatwierdzenia. Gdy nie ma konfliktów, działa zgodnie z oczekiwaniami.
pytanie: jak zsynchronizować lokalne i zdalne gałęzie dewelopera bez tworzenia zduplikowanych zatwierdzeń po zmianie bazy i rozwiązaniu konfliktu
Ustawiać:
// master branch is the main branch
git checkout master
git checkout -b myNewFeature
// I will work on this at work and at home
git push origin myNewFeature
// work work work on myNewFeature
// master branch has been updated and will conflict with myNewFeature
git pull --rebase origin master
// we have conflicts
// solve conflict
git rebase --continue
//repeat until rebase is complete
git push origin myNewFeature
//ERROR
error: failed to push some refs to 'git@github.com:ariklevy/dropLocker.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
// do what git says and pull
git pull origin myNewFeature
git push origin myNewFeature
// Now I have duplicate commits on the remote branch myNewFeature
EDYTOWAĆ
Wygląda więc na to, że przerwie to przepływ pracy:
developer1 pracujący nad myNewFeature developer2 pracujący nad hisNewFeature obaj używają mastera jako głównej gałęzi
developer2 łączy myNewFeature z hisNewFeature
developer1 ponownie bazuje, rozwiązuje konflikty, a następnie wymusza wypychanie do zdalnego oddziału dla myNewFeature
kilka dni później developer2 ponownie łączy myNewFeature z jegoNewFeature
Czy to spowoduje, że inni deweloperzy znienawidzą programistę Developer1?
we
? czy jesteś w zespole złożonym z czegoś więcej niż tylko ty?they
powiedz (ludziom, którzy wiedzą więcej niż ja), że jeśli udostępniasz swój kod, nie powinieneś go używaćrebase
. Dlaczego po prostu nie robiszgit pull
igit merge
?