The Scout Pattern
Eis um resumo dos passos desta receita:
- Tenha certeza de que você está no branch certo e tem uma cópia de trabalho limpa.
- Crie um novo branch (geralmente eu chamo de test_merge) e troque para ele.
- Faça o merge.
- Abra o seu visualizador e imagine como o seu histórico vai mudar quando você o atualizar.
- Atualize o seu visualizador e veja se sua previsão estava correta.
- 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.
-
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)
-
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
-
Crie um novo branch e troque para ele.
-
Digite
git checkout -b test_merge
. Agora, se você digitargit status
de novo, você deve ver uma mensagem dizendo que você está no branch test_merge.
-
Digite
-
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
.
-
Digite
-
Abra o seu visualizador e imagine como o seu histórico vai mudar quando você o atualizar.
-
Por exemplo:
- Depois do merge, você deve ver um novo commit.
- O novo commit deve ter uma mensagem como "Merge branch 'spiffy_new_feature' into master".
- 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.
-
Por exemplo:
- Atualize o seu visualizador e veja se sua previsão estava correta.
-
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
-
Se SIM: Mova o branch master até onde o branch test_merge está com:
- About This Site
- Git Makes More Sense When You Understand X
- Example 1: Kent Beck
- Example 2: Git for Ages 4 and Up
- Example 3: Homeomorphic Endofunctors
- Example 4: LSD and Chainsaws
- The Internet Talks Back!
- Graph Theory
- Seven Bridges of Königsberg
- Places To Go, and Ways to Get There
- Nodes and Edges
- Attaching Labels to Nodes
- Attaching Labels to Edges
- Directed Versus Undirected Graphs
- Reachability
- Graphs and Git
- Visualizing Your Git Repository
- References
- The Reference Reference
- Making Sense of the Display
- Garbage Collection
- Experimenting With Git
- References Make Commits Reachable
- My Humble Beginnings
- Branches as Savepoints
- Use Your Targeting Computer, Luke
- Testing Out Merges
- Rebase From the Ground Up
- Cherry-Picking Explained
- Using 'git cherry-pick' to Simulate 'git rebase'
- A Helpful Mnemonic for 'git rebase' Arguments
- The End