WIP: A descrição e explicação dos comandos está sendo postada aqui conforme o avanço.
levels
Main
Módulo: Movendo trabalho por aí
1: Introdução ao cherry-pick
Dificuldade (pra mim!): fácil
- O próximo conceito que vamos abordar é "movendo trabalho por aí" -- em outras palavras, veremos as formas como o desenvolvedor pode dizer "eu quero este trabalho aqui, e aquele ali" de formas precisas, eloquentes e flexíveis.
- O primeiro comando desta série é o git
cherry-pick
. Ele é chamado da seguinte forma:
git cherry-pick <Commit1> <Commit2> <...>
- Trata-se de uma forma bastante direta de dizer que você gostaria de copiar uma série de commits abaixo do seu local atual (HEAD).
2: Introdução ao rebase interativo
Dificuldade (pra mim!):
- O cherry-pick é ótimo quando você sabe de antemão quais commits você quer (e você sabe os hashes correspondentes) -- é difícil bater a simplicidade que ele oferece.
- Mas e quando você não sabe quais commits você quer? Felizmente o git pode te ajudar nesta situação também! Podemos usar o rebase interativo para isso -- trata-se da melhor forma de rever uma série de commits sobre os quais você está prestes a fazer um rebase.
- O rebase interativo é simplesmente o comando rebase com a opção
-i
. - Se você incluir essa opção, o git abrirá uma interface para mostrar quais commits estão prestes a serem copiados abaixo do alvo do rebase. Ele também mostra os hashes e as mensagens dos commits, o que é ótimo para ter noção do que é o que.
- No git "de verdade", a interface nada mais é que um arquivo aberto em um editor de texto (por exemplo o vim).
- Quando a janela de rebase interativo abrir, você pode fazer 3 coisas diferentes:
- Você pode reordenar os commits simplesmente mudando sua ordem na interface (na nossa janela isso significa arrastar e soltar com o mouse).
- Você pode escolher simplesmente omitir alguns commits. Para isso, clique no botão pick -- deixar o pick desligado significa que você quer descartar o commit.
- Por fim, você pode "esmagar" (fazer squash) nos commits.
Top comments (0)