Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save luan0ap/dd39320d66ec76e3d4a38b1fda56a683 to your computer and use it in GitHub Desktop.
Save luan0ap/dd39320d66ec76e3d4a38b1fda56a683 to your computer and use it in GitHub Desktop.
Como realizar squash commits no GIT - translated pt_BR

Squashing Git Commits

O caminho fácil e flexível

Este método evita conflitos durante eo merge, se você tem que periódicamente fazer pull da master em sua branch. Também da a oportuniadade de realizar squash em mais de um commit ou para re-organizar seu código completamente em diferentes commits (ex: se você terminou seu trabalho em três diferente features mas os commits não foram consecutivos).

*Nota: Você não pode usar esse método se você pretende abrir um Pull Request para realizer merge da sua branch. Esse método requer commits diretamente na master.

Troque para a branch master e certifique-se de estar tudo atualizado:

git checkout master && git pull

Faça merge sua feature branch na master localmente:

git merge feature_branch

Resete a sua branch local master para o estado de origem.

git reset origin/master

Agora todas as suas mudanças são consideradas como "unstaged". Você pode coloca-las em "stage" e realizar o commit delas em um ou mais commits.

git add . --all
git commit

(Fonte)

O caminho difícil e menos flexível

Este método somente permite você realizar squash dos últimos X consecutivos commits. Também, se você tiver realizado merge da master em sua branch ao longo do caminho, você terá que realizar merge manualmente o seu novo (squashed) commit na master e resolver os conflitos.

use este método se você não realizou merge da maste em sua branch, e planeja combinar todos os commits em um, e você pode mudar apenas uma featuro do projeto; ou, independente das condições, você deve user esse método se planeja abrir um Pull Request para mesclar seu código.

Combinando os commits

Para realizar squas dos últimos 3 commits em um:

git reset --soft HEAD~3
git commit -m "New message for the combined commit"

Pushing the squashed commit

Se os commits foram enviados para a branch remota:

git push origin +name-of-branch

The plus sign forces the remote branch to accept your rewritten history, otherwise you will end up with divergent branches

Se os commits NÃO foram enviados para a branch remota:

git push origin name-of-branch

Em outras palavras, apenas um push normal como outro qualque


Fonte principal: http://stackoverflow.com/a/5201642/348995 Fonte para informações sobre quando fazer commit onde já foi submetido: http://stackoverflow.com/a/5668050/348995

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment