DEV Community

Vitor Jr.
Vitor Jr.

Posted on

Aprendendo Git Branching - Temas Avançados

WIP: A descrição e explicação dos comandos está sendo postada aqui conforme o avanço.

levels

Main

Módulo: Temas avançados

1: Fazendo mais de 9000 rebases
Dificuldade (pra mim!): dificil
  • Essa lição é mais um cenário proposto que diz:

Cara, temos um monte de branches aqui! Vamos fazer um rebase de todo o trabalho contido nesses branches para o main.

No entanto, a cúpula da administração está tornando as coisas mais difíceis -- eles querem que os commits estejam todos em ordem sequencial. Isso significa que a nossa árvore final precisa ter o C7' por último, C6' acima disso, e assim por diante, tudo ordenado.

Se você fizer besteira, sinta-se livre para usar o comando reset para recomeçar do zero. Depois lembre de olhar nossa solução do gabarito para ver se consegue resolver a tarefa usando menos comandos!

  • Comandos:
# 1
git rebase main bugFix

# 2
git rebase bugFix side

# 3
git rebase side another

# 4
git rebase another main
Enter fullscreen mode Exit fullscreen mode
2: Especificando pais
Dificuldade (pra mim!): fácil
  • Essa lição é mais um cenário proposto que diz:

Assim como o modificador ~, o modificador ^ também aceita um número opcional depois dele.

Em vez de especificar o número de gerações a voltar (que é o que o ~ faz), o modificador no ^ especifica qual referência de pai a ser seguida a partir de um commit de merge. Lembre-se que commits de merge possuem múltiplos pais, então o caminho a seguir é ambíguo.

O Git normalmente subirá o "primeiro" pai de um commit de merge, mas especificar um número após o ^ muda esse comportamento padrão.

Basta de conversa, vejamos o operador em ação.

  • Comandos:
# 1
git branch bugWork mmain~^2~
Enter fullscreen mode Exit fullscreen mode
3: Espaguete de branches
Dificuldade (pra mim!): fácil
  • Essa lição é mais um cenário proposto que diz:

Uhuuuuu Nelly! Temos um belo de um objetivo para alcançar neste nível.

Temos aqui um main que está alguns commits atrás dos branches one, two e three. Seja lá por qual razão, precisamos atualizar esses três outros branches com versões modificadas dos últimos commits do main.

O branch one precisa de uma reordenação e da exclusão do C5. O two precisa apenas de reordenação. O three precisa de um único commit!

Vamos deixar você descobrir como resolver esta tarefa -- mas não deixe de ver a nossa solução depois com o comando show solution.

  • Comandos:
# 1
git checkout one

# 2
git cherry-pick C4 C3 C2

# 3
git checkout two

# 4
git cherry-pick C5 C4 C3 C2

# 5
git branch -f three C2
Enter fullscreen mode Exit fullscreen mode

Top comments (0)