Skip to main content

Esta versão do GitHub Enterprise será descontinuada em 2022-09-28. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, segurança aprimorada e novos recursos, atualize para a última versão do GitHub Enterprise. Para obter ajuda com a atualização, entre em contato com o suporte do GitHub Enterprise.

Sobre merges de pull request

Você pode mesclar solicitações de pull mantendo todos os commits em um branch de recurso, combinando todos os commits em um único commit ou realocando commits individuais do branch head no branch base.

Mesclar seus commits

Quando você clica na opção padrão Mesclar solicitação de pull em uma solicitação de pull no your GitHub Enterprise Server instance, todos os commits do branch de recursos são adicionados ao branch base em um commit de mesclagem. A solicitação de pull é mesclada por meio da opção --no-ff.

Para mesclar as solicitações de pull, você precisa ter permissões de gravação no repositório.

standard-merge-commit-diagram

Combinação por squash e mesclagem de commits

Quando você seleciona a opção Mesclar por squash e mesclar em uma solicitação de pull no your GitHub Enterprise Server instance, os commits da solicitação de pull são mesclados por squash em um só commit. Em vez de ver todos os commits individuais de um contribuidor de um branch de tópico, os commits são combinados em um commit e mesclados no branch-padrão. As solicitações de pull com commits mesclados por squash são mescladas com a opção de avanço rápido.

Para mesclar por squash e mesclar solicitações de pull, você precisa ter permissões de gravação no repositório, e o repositório precisa permitir a mesclagem squash.

commit-squashing-diagram

Você pode usar combinação por squash e merge para criar um histórico de Git mais simplificado no seu repositório. Os commits de trabalho em andamento são úteis ao trabalhar em um branch de recurso, mas não são necessariamente importantes para manter no histórico do Git. Se você fizer a combinação por squash desses commits em um commit enquanto faz merge com o branch-padrão, você certamente poderá manter as alterações originais com um histórico Git.

Mesclar mensagem para uma mesclagem por squash

Quando você faz combinação por squash e mesclagem, o GitHub gera uma mensagem de commit padrão, que você pode editar. A mensagem padrão depende do número de commits na solicitação de pull, não incluindo os commits de mesclagem.

Número de commitsResumoDescrição
Um commitO título da mensagem de commit do único commit, seguido do número de pull requestO texto da mensagem de commit para o único commit
Mais de um commitTítulo da pull request, seguido do número da pull requestUma lista das mensagens de commit para todos os commits combinados por squash, por ordem de data
Número de commitsResumoDescrição
Um commitO título da mensagem de commit do único commit, seguido do número de pull requestO texto da mensagem de commit para o único commit
Mais de um commitTítulo da pull request, seguido do número da pull requestUma lista das mensagens de commit para todos os commits combinados por squash, por ordem de data

Fazendo combinação por squash e merge com um branch de longa duração

Se você pretende continuar o trabalho no branch principal de uma solicitação de pull depois que a solicitação de pull for mesclada, recomendamos que você não use a mesclagem squash nem mescle a solicitação de pull.

Quando você cria uma solicitação de pull, o GitHub identifica o commit mais recente que está no branch principal e no branch base: o commit ancestral comum. Quando você combinar por squash e mesclar a pull request, o GitHub cria um commit no branch base que contém todas as alterações feitas no branch head desde o commit de ancestral comum.

Uma vez que esse commit está apenas no branch base e não no branch head, o ancestral comum dos dois branches permanece inalterado. Se você continuar a trabalhar no branch head e, em seguida, criar uma nova pull request entre os dois branches, a pull request incluirá todos os commits desde o ancestral comum, incluindo commits que você combinou por squash e fez merge na pull request anterior. Se não houver conflitos, você pode mesclar esses commits com segurança. No entanto, este fluxo de trabalho torna os conflitos de mesclagem mais prováveis. Se você continuar a combinar por squash e mesclar pull requests para um branch head de longo prazo, você terá que resolver os mesmos conflitos repetidamente.

Troca de base e mesclagem de commits

Quando você seleciona a opção Troca de base e mesclagem em uma solicitação de pull no your GitHub Enterprise Server instance, todos os commits do branch do tópico (ou do branch principal) são adicionados ao branch base individualmente sem um commit de mesclagem. Dessa forma, o comportamento de troca de base e mesclagem se assemelha a uma mesclagem de avanço rápida mantendo um histórico de projeto linear. No entanto, a troca de base faz isso reescrevendo o histórico de commit no branch base com novos commits.

O comportamento de troca de base e mesclagem no GitHub Enterprise Server se desvia ligeiramente de git rebase. A troca de base e a mesclagem no GitHub sempre atualizará as informações do autor de commit e criará novos SHAs de commit, enquanto o git rebase fora do GitHub não altera as informações do autor de commit quando a troca de base acontece com base em um commit ancestral. Para obter mais informações sobre git rebase, confira git-rebase na documentação do Git.

Para troca de base e mesclagem das solicitações de pull, você precisa ter permissões de gravação no repositório e o repositório precisa permitir a troca de base e a mesclagem.

Para ver uma representação visual de git rebase, confira o capítulo "Ramificação do Git – Troca de base " do livro Pro Git.

Você não pode fazer rebase e merge automaticamente no your GitHub Enterprise Server instance quando:

  • A pull request tem conflitos de merge.
  • O rebase dos commits do branch base no branch head se depara com conflitos.
  • O rebase dos commits é considerado "não seguro"; por exemplo, quando é possível fazer rebase sem conflitos de merge, mas que geraria um resultado diferente daquele que um merge geraria.

Se ainda quiser fazer rebase dos commits, mas não puder fazer rebase e merge automaticamente no your GitHub Enterprise Server instance, você deverá:

Qualquer pessoa com permissões de gravação no repositório pode mesclar as alterações usando o botão Trocar base e mesclar do your GitHub Enterprise Server instance.

Leitura adicional