→ O git rebase
de uma branch no Git é uma maneira de mover toda uma branch para outro ponto da árvore, isto é, ele "pega" os commits de uma branch de origem e enfileira com os commits da branch de destino.
git rebase nome_da_branch
→ O git rebase
pode ser aplicado caso o desenvolvedor queira alterar o histórico de commits.
Por exemplo, digamos que temos uma branch que esteja divergente da branch master/main no ponto A:
/o-----o---o--o-----o--------- branch
--o-o--A--o---o---o---o----o--o-o-o--- master/main
Ao fazer o rebase, podemos movê-la com o comando git rebase master/main
assim:
/o-----o---o--o-----o------ branch
--o-o--A--o---o---o---o----o--o-o-o master/main
O git cherry-pick
é um comando do Git que permite escolher diferentes commits para carregar no branch selecionado. Ou seja, é a ação de pegar um commit de uma branch e aplicar em outra.
git cherry-pick
pode ser útil para desfazer mudanças, mas nem sempre é uma boa prática, pois pode causar commits duplicados. Esse comando não deve substituir o git merge
e git rebase
.
git cherry-pick "commitID"
Pega um intervalo de commits:
git cherry-pick 1..3 //Pega o commit 2 e 3 ignorando o 1
git cherry-pick 1^..3 //Pega todos os commits do 1-3
Pega todos os commits da branch:
git cherry-pick "nomeBranch"
O git cherry-pick
pode ser aplicado em um repositório como o seguinte:
a - b - c - d (main)
e - f - g (feature)
Nesse caso se deseja usar o commit "f" na branch main. Primeiro é preciso estar na branch main:
git checkout main
Então, executamos o cherry-pick com o seguinte comando:
git cherry-pick f
Após a execução, o histórico do Git vai se parecer com:
a - b - c - d - f (main)
e - f - g (feature)
O commit f foi colocado na ramificação principal com sucesso.
O comando git revert
é usado para desfazer alterações ao histórico de commits do repositório. Outros comandos de "desfazer", como o git checkout
e o git reset
, movem os indicadores de referência do HEAD e do branch para commits especificados. O git revert
também pega o commit específico; no entanto, o git revert
não move os indicadores de referência para esse commit. A operação de reversão vai pegar o commit especificado, inverter as alterações dele e criar um "commit de reversão" novo. Os indicadores de referência são então atualizados para apontar para o commit de reversão novo, tornando o commit na ponta do branch.
git revert "Commit Desejado"
Desfazer commits em um branch público
O comando git revert
pode ser considerado um comando do tipo "desfazer"; no entanto, ele não é uma operação tradicional de desfazer. Em vez de remover o commit do histórico do projeto, ele descobre como inverter as alterações introduzidas pelo commit e anexa um commit novo com o conteúdo resultante. Assim, ele evita que o Git perca o histórico, o que é importante para a integridade do histórico de revisão e para uma colaboração confiável.
O comando git revert pode ser considerado um comando do tipo "desfazer"; no entanto, ele não é uma operação tradicional de desfazer. Em vez de remover o commit do histórico do projeto, ele descobre como inverter as alterações introduzidas pelo commit e anexa um commit novo com o conteúdo resultante. Assim, ele evita que o Git perca o histórico, o que é importante para a integridade do histórico de revisão e para uma colaboração confiável.
O processo de reversão deve ser usado quando você quer aplicar o inverso do commit do histórico do projeto. Isso pode ser útil, por exemplo, se você estiver acompanhando um bug e descobrir que ele foi introduzido por um único commit. Em vez de ir até ela por conta própria, corrigir e confirmar um novo snapshot, você pode usar o git revert
para fazer tudo isso na hora.
O squash irá servir para mudarmos o histórico de nossos commits e agrupá-los de uma nova maneira, ou seja, no final podemos ter feito 20 commits, mas aplicando o essa prática, poderemos reduzir o número para 10, por exemplo.
git log --oneline
Para ver lista de commits em uma linha
git rebase --interactive
Para ver uma lista de interações
comands: s, squash <'commit'>
Agora basta substituir os commits
A combinação por squash permite que você combine vários commits no histórico do seu branch em um único commit. Isso pode ajudar a manter a história do seu repositório mais legível e compreensível.
Made with ❤️ by Luan Lima, Mariana Machado and Marcklen.