Todo esse git reset, rígido, suave e tudo o mais mencionado aqui provavelmente está funcionando (não funcionou para mim) se você executar as etapas corretamente e algum tipo de gênio.
Se você é o Joe smo médio, tente o seguinte:
Como usar o git merge --squash?
Salvei minha vida, e vou ser a minha squash, usei isso 4 vezes desde que descobri. Simples, limpo e basicamente 1 comamnd. Resumindo:
se você estiver em uma ramificação, vamos chamá-la de "my_new_feature" e desenvolva e sua solicitação de recebimento tem 35 confirmações (ou muitas) e você deseja que seja 1.
A. Certifique-se de que sua ramificação esteja atualizada, Continue desenvolva, obtenha as últimas e mescle e resolva quaisquer conflitos com "my_new_feature"
(esta etapa realmente deve ser executada assim que possível o tempo todo)
B. Receba as últimas novidades sobre o desenvolvimento e ramifique para uma nova ramificação: "my_new_feature_squashed"
C. magia está aqui.
Você quer levar o seu trabalho de "my_new_feature" para "my_new_feature_squashed"
Então, basta fazer (enquanto em seu novo ramo criamos o develop):
git merge --squash my_new_feature
Todas as suas alterações agora estarão em seu novo ramo, fique à vontade para testá-lo e faça apenas um único commit, push, novo PR desse ramo - e aguarde a repetição no dia seguinte.
Você não gosta de codificar? :)
git rebase -i 58333012713fc168bd70ad00d191b3bdc601fa2d
wich vai fazer um rebase interativo, onde o commitnumber é a última confirmação que permanece inalterada