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

Git Squash · Changes

Page history
Created Git Squash (markdown) authored May 12, 2018 by Matheus Vaccaro's avatar Matheus Vaccaro
Show whitespace changes
Inline Side-by-side
Gerenciamento/Configuracao/Git-Squash.md 0 → 100644
View page @ 5c4fead8
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](/uploads/3878d29765e2eedfe5fd30318f6d1239/Screenshot_from_2018-05-05_21-17-22.png)
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](/uploads/17e88b30545bab8039112cb9c8efc3c0/Screenshot_from_2018-05-05_21-33-33.png)
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](/uploads/868203db3fad5f2ddd231f5943517964/Screenshot_from_2018-05-05_21-36-43.png)
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`.
\ No newline at end of file
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