Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • A api
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • arbitrium
  • api
  • Wiki
  • Gerenciamento
  • Configuracao
  • Git Squash

Last edited by F4NT0 Jul 10, 2020
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Git Squash

Utilizando o git rebase é possível esmagar vários commits em apenas um. Porque isso é interessante?

  1. As funcionalidades ou correções de bugs devem ser "atômicas", ou seja, entregues em 1 commit apenas.
  2. Facilita o rastreamento da funcionalidade e identificação de todas as mudanças de código que foram feitas na funcionalidade.
  3. Torna-se MUITO mais fácil reverter uma funcionalidade quando detectamos que ela inseriu um defeito no código.

Antes de começar, verifique a regra de ouro:

Faça rebase apenas em commits de branches onde você é o único desenvolvedor

Assumindo que temos os seguintes commits exibidos pelo comando git log:

Screenshot_from_2018-05-05_21-17-22

Podemos esmagar quantos commits quisermos em apenas 1 da seguinte forma:

git rebase -i HEAD~3 onde HEAD indica o nosso commit atual, e 3 é o número de commits que queremos analisar. O número pode ser maior, já que esse comando por si ainda não completa o squash.

Quando executarmos esse comando, a seguinte tela será exibida:

Screenshot_from_2018-05-05_21-33-33

Perceba que a ordem dos commits está invertida comparada com o git log. Os commits mais recentes estão abaixo. Os comentários mostram as opções disponíveis: se quisermos juntar os commits 2 e 3 sobre o commit 1, só precisamos trocar a palavra "pick" por "squash" (ou simplesmente "s") sem aspas, nos commits que queremos esmagar. Nossa edição deve ficar desta forma:

Screenshot_from_2018-05-05_21-36-43

Precisamos então salvar e sair do nosso editor. Se estiver usando o nano, as instruções para sair encontram-se na parte debaixo da tela (Ctrl+X, seguido de um S/Y para confirmar, e um ENTER). Se estiver utilizando o vi/vim, pressione ESC, seguido de :wq, e ENTER.

Por fim o git permitirá a edição da mensagem de commit. Por padrão ele mostrará as 3 mensagens de commit, além de linhas que começam com # que são comentários e não aparecerão na mensagem final. Altere a vontade a mensagem, salve o arquivo e saia.

Para atualizar o branch remoto (já que alguns commits foram destruídos e outros tiveram a referência alterada), utilize o commando git push --force-with-lease.

Clone repository
  • Back
    • Detalhamento das Rotas de Activity
    • Especificacao de Rotas
  • Banco
    • Modelagem
  • Front
    • Definicao
    • Design
    • Tutorial VueJS
  • Gerenciamento
    • Configuracao
      • Definicao de Branches e Fluxo do Git
      • Git Rebase
      • Git Squash
    • Cronograma AGES 2018 1
    • Horarios do Time
    • Sprints
      • Dailies
      • Planning
      • Retrospectivas
  • Requisitos
    • Regras de Negocio
View All Pages