Esta versão do GitHub Enterprise foi descontinuada em 2021-09-23. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, melhorar a segurança e novos recursos, upgrade to the latest version of GitHub Enterprise. Para ajuda com a atualização, contact GitHub Enterprise support.

Sobre o Git rebase

O comando 'git rebase' permite alterar com facilidade uma variedade de commits, modificando o histórico do seu repositório. É possível reordenar, editar ou combinar commits por squash.

Geralmente, git rebase é usado para:

  • Editar mensagens anteriores do commit
  • Combinar vários commits em um
  • Excluir ou reverter commits que não são mais necessários

Aviso: como a alteração do histórico de commits pode dificultar a vida de outras pessoas que usam o repositório, não é uma boa ideia fazer rebase de commits quando você já fez push em um repositório. Para saber como fazer rebase com segurança no sua instância do GitHub Enterprise Server, consulte "Sobre merges de pull request".

Fazer rebase de commits em um branch

Para fazer rebase de todos os commits entre outro branch e o estado do branch atual, você pode inserir o seguinte comando no shell (ou o prompt de comando para Windows, ou o terminal para Mac e Linux):

$ git rebase --interactive other_branch_name

Fazer rebase de commits em um momento específico

Para fazer rebase dos últimos commits em seu branch atual, você pode inserir o seguindo comando no shell:

$ git rebase --interactive HEAD~7

Comandos disponíveis ao fazer rebase

Há seis comandos disponíveis para fazer rebase:

pick
pick simplesmente significa que o commit está incluído. Reorganizar a ordem de pick dos comandos altera a ordem dos commits quando o rebase está em andamento. Se você optar por não incluir um commit, será preciso excluir a linha toda.
reword
O comando reword é semelhante a pick, mas depois que você o usa, o processo de rebase pausa e dá a chance de você alterar a mensagem do commit. As alterações feitas pelo commit não são afetadas.
edit
Se optar por editar (edit) um commit, você terá a chance de corrigi-lo, o que significa que será possível adicionar ou alterar o commit por inteiro. Também é possível fazer mais commits antes de continuar com o rebase. Isso permite que você divida um commit grande em commits menores ou remova alterações equivocadas feitas em um commit.
combinação por squash
Esse comando permite combinar dois ou mais commits em um único commit. Um commit é combinado por squash no commit acima dele. O Git permite que você grave uma nova mensagem do commit descrevendo ambas as alterações.
fixup
Esse comando é semelhante ao squash, mas o commit a sofrer merge tem sua mensagem descartada. O commit simplesmente sofre merge no commit acima dele, e a mensagem do commit anterior é usado para descrever ambas as alterações.
exec
Permite que você execute comandos de shell arbitrários em um commit.

Um exemplo de uso de git rebase

Não importa o comando a ser usado, o Git iniciará seu editor de texto padrão e abrirá um arquivo que detalha os commits no intervalo escolhido. Esse arquivo é parecido com este:

pick 1fc6c95 Patch A
pick 6b2481b Patch B
pick dd1475d something I want to split
pick c619268 A fix for Patch B
pick fa39187 something to add to patch A
pick 4ca2acc i cant' typ goods
pick 7b36971 something to move before patch B

# Rebase 41a72e6..7b36971 onto 41a72e6
#
# Comandos:
#  p, pick = usar commit
#  r, reword = usar commit, mas editar a mensagem do commit
#  e, edit = usar commit, mas interromper para correção
#  s, squash = usar commit, mas juntar  no commit anterior
#  f, fixup = como "squash", mas descartar mensagem de log desse commit
#  x, exec = executar comando (o restante da linha) usando shell
#
# Se você remover uma linha aqui ESSE COMMIT SERÁ PERDIDO.
# No entanto, se você remover tudo, o rebase será anulado.
#

Ao dividir essas informações, de cima para baixo, observamos que:

  • Sete commits são listados, o que indica que houve sete alterações entre nosso ponto de partida e o estado do nosso branch atual.
  • Os commits escolhidos para rebase são classificados na ordem das alterações mais antigas (no topo) para as mais recentes (na base).
  • Cada linha lista um comando (por padrão, pick), o SHA do commit e a mensagem do commit. Todo o procedimento de git rebase gira em torno da manipulação dessas três colunas. As alterações feitas são passadas por rebase ao seu repositório.
  • Depois dos commits, o Git informa a você o intervalo de commits com os quais estamos trabalhando (41a72e6..7b36971).
  • Por fim, o Git fornece alguma ajuda informando a você os comandos que estão disponíveis ao fazer rebase dos commits.

Leia mais