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

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.

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:

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