commits:$ git log --oneline4c03027 Adicionado Correiae23576b Adicionado Silva769bda9 Adicionado da2a71622 Adicionado Henrique5ebadcd Adicionado RafaelO squashAgora vamos imaginar que eu quero fazer um squash a partir de Henrique, ou seja quero que os commits 2a71622, 769bda9, e23576b e 4c03027 sejam um so, pois todos tratam da adicao do sobrenome no arquivo README. Para isso precisarei usar o comando rebase do git no commit que eu desejo, no caso a partir do Henrique (como e a partir do Henrique deveremos pegar 1 commit antes):$ git rebase -i 5ebadcdApos executar este comando sera aberto um arquivo temporario para podermos fazer as alteracoes desejadas, o arquivo sera similar a este abaixo:pick 2a71622 Adicionado Henriquepick 769bda9 Adicionado dapick e23576b Adicionado Silvapick 4c03027 Adicionado Correia # Rebase 5ebadcd..4c03027 onto 5ebadcd## Commands:# p, pick = use commit# r, reword = use commit, but edit the commit message# e, edit = use commit, but stop for amending# s, squash = use commit, but meld into previous commit# f, fixup = like "squash", but discard this commit's log message# x, exec = run command (the rest of the line) using shell## These lines can be re-ordered; they are executed from top to bottom.## If you remove a line here THAT COMMIT WILL BE LOST.## However, if you remove everything, the rebase will be aborted.## Note that empty commits are commented outNeste mesmo arquivo ja podemos visualizar algumas opcoes do que fazer com esses commits, para este post utilizaremos somente o squash, mas vale a pena conhecer as outras opcoes descritas abaixo de commands. Agora altere este arquivo da seguinte maneira:pick 2a71622 Adicionado Henriquesquash 769bda9 Adicionado dasquash e23576b Adicionado Silvasquash 4c03027 Adicionado Correia # Rebase 5ebadcd..4c03027 onto 5ebadcd## Commands:# p, pick = use commit# r, reword = use commit, but edit the commit message# e, edit = use commit, but stop for amending# s, squash = use commit, but meld into previous commit# f, fixup = like "squash", but discard this commit's log message# x, exec = run command (the rest of the line) using shell## These lines can be re-ordered; they are executed from top to bottom.## If you remove a line here THAT COMMIT WILL BE LOST.## However, if you remove everything, the rebase will be aborted.## Note that empty commits are commented outAs linhas dos commits 769bda9, e23576b e 4c03027 foram mudadas para squash, portanto serao combinados ao commit que possui a o nome pick, entao o commit 2a71622 agora sera unido aos 3 commits abaixo dele. E importante comentar que o squash nao remove os logs (mensagens dos commits) conforme a descricao do "Commands" ja a opcao fixup descarta os logs. Feita esta alteracao basta salvar o arquivo e sair. Feito isso sera apresentado outro arquivo similar a este abaixo:# This is a combination of 4 commits.# The first commit's message is:Adicionado Henrique# This is the 2nd commit message:Adicionado da# This is the 3rd commit message:Adicionado Silva# This is the 4th commit message:Adicionado Correia# Please enter the commit message for your changes. Lines starting# with '#' will be ignored, and an empty message aborts the commit.## Date: Tue