Voltamos ao assunto do git |
Essa é uma continuação do https://www.adilson.net.br/2018/02/removendo-commits-indesejaveis-do.html onde, por algum motivo, não conseguimos remover aquela entrada indesejável, após a correção do código das dicas anteriores. Mas, antes, volto a repetir o disclaimer abaixo:
OBS: Este blog não se responsabiliza por estragos causados por quem seguir as dicas a seguir. Se não quer ter problemas no seu repositório ou no repositório dos outros, FAÇA UM BACKUP PRIMEIRO. Seja dando um clone em outro lugar, copiando a pasta .git para um outro lugar ou dando um tar/zip no seu repositório. Depois não venha chorando dizendo que fez besteira.
Agora vamos voltar para a seguinte situação. Os estagiários fizeram tanta alterações no meio, por exemplo:
Number Hash Commit Message Author
1 2c6a45b (HEAD) Adicionando novidades Desenv.
2 93bf23d bla bla bla bla bla Estagiário 1
2 ae45fab Melhorando banco de dados Estagiário 1
3 77b9b82 Corrigindo banco de dados Estagiário 2
4 3c9093c Dando merge com master Desenv.
5 b3d92c5 Adicionando novo evento Colega
6 7feddbb Adicionando arquivos Desenv.
7 a809379 Commit inicial Desenv.
Você tenta seguir a dica anterior:
git rebase --onto HEAD~4 HEAD~1 master
Mas acaba em:
Um monte de erros antes...
error: Failed to merge in the changes.
Patch failed at 0001 Adicionando novidades
hint: Use 'git am --show-current-patch' to see the failed patch
Resolve all conflicts manually, mark them as resolved with
"git add/rm
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort"
.
E agora????
Nem tudo está perdido. Antes rode o comando: "git rebase --abort", "git reset --hard origin/master" e, rode este comando:
git rebase -i HEAD~4
Vai aparecer várias linhas para fazer as alterações neste estilo:
pick 77b9b82 Corrigindo banco de dados
pick ae45fab Melhorando banco de dados
pick 93bf23d bla bla bla bla bla
pick 2c6a45b Adicionando novidades
Note que a ordem está inversa. Agora, de cima para baixo, troque, a partir da seguinda linha, a palavra pick por squash (ou s que o resultado é o mesmo). O resultado fica, mais ou menos assim:
pick 77b9b82 Corrigindo banco de dados
s ae45fab Melhorando banco de dados
s 93bf23d bla bla bla bla bla
s 2c6a45b Adicionando novidades
Salva e uma outra janela de edição aparece. Neste caso ele mostra todas as linhas dos commits. Comenta todas, menos a que você deseja manter. Isso não altera no resultado final. Mas, como você quer se livrar dos commits indesejáveis, comentar faz todo sentido.
Daí só salva e os commits antigos foram devidamente eliminados quando foi feito a unificação. Mas isso só vale se fez a devida correção no seu commit. Caso contrário faça alguns reverts antes e siga a mesma dica, mudando apenas o número das linhas no HEAD, que aumentou com os reverts.
Mais informações em:
https://www.internalpointers.com/post/squash-commits-into-one-git
Tenham um bom domingo uma ótima semana.
Nenhum comentário:
Postar um comentário