OK, achei que era um cenário simples, o que estou perdendo?
Eu tenho um masterramo e um featureramo. Faço alguns trabalhos master, outros featuree mais master. Termino com algo assim (ordem lexicográfica implica a ordem dos commits):
A--B--C------F--G (master)
\
D--E (feature)
Não tenho nenhum problema para git push origin mastermanter o controle remoto masteratualizado, nem com git push origin feature(quando ativado feature) para manter um backup remoto para o meu featuretrabalho. Até agora, estamos bem.
Mas agora eu quero me refazer featuredos F--Gcommits no master, então eu git checkout featuree git rebase master. Ainda bom. Agora temos:
A--B--C------F--G (master)
\
D'--E' (feature)
Problema: no momento em que desejo fazer backup da nova featureramificação rebaseada git push origin feature, o push é rejeitado, pois a árvore foi alterada devido à rebasagem. Isso só pode ser resolvido com git push --force origin feature.
Eu odeio usar --forcesem ter certeza de que preciso. Então, eu preciso disso? O rebasing implica necessariamente que o próximo pushdeve ser --forcecumprido?
Esse ramo de recursos não é compartilhado com outros desenvolvedores; portanto, não tenho nenhum problema de fato com o impulso de força, não vou perder nenhum dado, a questão é mais conceitual.