The Scout Pattern

Eis um resumo dos passos desta receita:

  1. Tenha certeza de que você está no branch certo e tem uma cópia de trabalho limpa.
  2. Crie um novo branch (geralmente eu chamo de test_merge) e troque para ele.
  3. Faça o merge.
  4. Abra o seu visualizador e imagine como o seu histórico vai mudar quando você o atualizar.
  5. Atualize o seu visualizador e veja se sua previsão estava correta.
  6. Ficou satisfeito com o resultado?
    • Se SIM: Mova seu branch real para onde o branch test_merge está.
    • Se NÃO: Exclua o branch test_merge.

Eu chamo isso do padrão do Olheiro: você não tem certeza de como é o terreno à frente, então manda um grupo de olheiros para ir na frente e verificar. Se ele informa que está tudo bem, você segue em frente e se junta a eles. Se não, bom, era só um grupo pequeno de olheiros e nós diremos às famílias que eles morreram com honra...

A versão longa

Você está no branch master e você quer que as mudanças do branch spiffy_new_feature sejam incorporadas ao master. Você não tem certeza se isso é uma boa ideia, então você quer testar o merge e ser capaz de desfazê-lo se as coisas não saírem como esperado.

  1. Tenha certeza de que você está no branch certo e tem uma cópia de trabalho limpa.
    • Seja qual for o visualizador que você está usando, descubra como ele mostra qual o branch atual em que você está. Ou, na linha de comando, digite git status e você deve ver algo como isso: # On branch master
      nothing to commit (working directory clean)
  2. Crie um novo branch e troque para ele.
    • Digite git checkout -b test_merge. Agora, se você digitar git status de novo, você deve ver uma mensagem dizendo que você está no branch test_merge.
  3. Faça o merge.
    • Digite git merge spiffy_new_feature. Se você tiver sorte, não haverá conflitos de merge que você não consiga resolver.
    • Se você quiser cancelar o merge neste ponto, digite git reset --hard.
  4. Abra o seu visualizador e imagine como o seu histórico vai mudar quando você o atualizar.
    • Por exemplo:
      1. Depois do merge, você deve ver um novo commit.
      2. O novo commit deve ter uma mensagem como "Merge branch 'spiffy_new_feature' into master".
      3. O rótulo do seu branch test_merge deve ter sido movido para este novo commit, enquanto que os rótulos dos branches master e spiffy_new_feature devem estar no mesmo lugar.
  5. Atualize o seu visualizador e veja se sua previsão estava correta.
  6. Ficou satisfeito com o resultado?
    • Se SIM: Mova o branch master até onde o branch test_merge está com: git checkout master
      git merge test_merge
    • Se NÃO: Exclua o branch test_merge com: git checkout master
      git branch -D test_merge