Em uma tentativa de alcançar o nirvana do git, estou passando o dia aprendendo como aproveitar o rebase para situações em que atualmente faço a fusão.
Ao percorrer o que considero ser um fluxo git 101 (que explico abaixo), preciso fazer isso push --force
ao empurrar minhas alterações de volta à origem.
Eu não sou o único - eu sei que isso é um terreno coberto (ver 1 , 2 , 3 , 4 , 5 ), e entendo as razões técnicas pelas quais uma força é necessária. Meu problema é este --- há muitas (muitas) entradas de blog elogiando o rebase e como isso mudou suas vidas (ver 1 , 2 , 3 , 4 para listar alguns), mas nenhum deles menciona que push --force
faz parte do seu fluxo. No entanto, quase todas as respostas às questões de stackoverflow existentes dizem coisas como "sim, se você vai rebase, você tem que usar push --force
".
Dado o número e religiosidade dos defensores do rebase, tenho que acreditar que o uso de 'push --force' não é uma parte inerente de um fluxo de rebase e que, se alguém frequentemente tiver que forçar seus empurrões, eles estão fazendo algo errado .
push --force
é uma coisa ruim .
Então aqui está o meu fluxo. De que forma eu poderia alcançar os mesmos resultados sem uma força?
Exemplo Simples
Duas filiais:
- v1.0 - um branch de lançamento, contém apenas patches
- master - tudo para o próximo lançamento principal.
Eu tenho alguns commits de patch e alguns commits para o próximo lançamento.
Eu gostaria de incorporar os patches ao meu mestre para que eles não se percam no próximo lançamento. Pré-iluminação, eu simplesmente:
git checkout master
git merge v1.0
Mas agora estou tentando
git checkout master
git rebase v1.0
Então agora estou aqui:
Hora de:
git push
Sem dados.