👋 We've unified all of GitHub's product documentation in one place! Check out the content for REST API, GraphQL API, and Developers. Learn more on the GitHub blog.


Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

Esta versão do GitHub Enterprise será descontinuada em Esta versão do GitHub Enterprise foi descontinuada em 2020-08-20. No patch releases will be made, even for critical security issues. For better performance, improved security, and new features, upgrade to the latest version of GitHub Enterprise. For help with the upgrade, contact GitHub Enterprise support.

Versão do artigo: Enterprise Server 2.18

Sobre métodos de merge no GitHub

Você pode permitir que contribuidores com acesso push ao seu repositório façam merge das respectivas pull requests no sua instância do GitHub Enterprise Server com diferentes opções de merge ou apliquem um método de merge específico para todas as pull requests do seu repositório.

Neste artigo

Você conseguiu encontrar o que estava procurando?

You can configure pull request merge options on sua instância do GitHub Enterprise Server to meet your workflow needs and preferences for managing Git history. For more information, see "Configuring pull request merges." É possível aplicar um tipo de método de merge, como combinação por squash ou rebase de commit, apena habilitando o método desejado para o repositório.

When you click the default Merge pull request option on a pull request on sua instância do GitHub Enterprise Server, all commits from the feature branch are added to the base branch in a merge commit. The pull request is merged using the --no-ff option.

To merge pull requests, you must have write permissions in the repository.

standard-merge-commit-diagram

Combinar por squash os commits de merge

When you select the Squash and merge option on a pull request on sua instância do GitHub Enterprise Server, the pull request's commits are squashed into a single commit. Instead of seeing all of a contributor's individual commits from a topic branch, the commits are combined into one commit and merged into the default branch. Pull requests with squashed commits are merged using the fast-forward option.

To squash and merge pull requests, you must have write permissions in the repository, and the repository must allow squash merging.

commit-squashing-diagram

You can use squash and merge to create a more streamlined Git history in your repository. Work-in-progress commits are helpful when working on a feature branch, but they aren’t necessarily important to retain in the Git history. If you squash these commits into one commit while merging to the default branch, you can retain the original changes with a clear Git history.

Antes de habilitar a combinação de commits por squash, considere estas desvantagens:

  • Você perde informações sobre quando alterações específicas foram originalmente feitas e quem criou os commits combinados por squash.
  • If you continue working on the head branch of a pull request after squashing and merging, and then create a new pull request between the same branches, commits that you previously squashed and merged will be listed in the new pull request. You may also have conflicts that you have to repeatedly resolve in each successive pull request. Para obter mais informações, consulte "Sobre merges da pull request".
  • Alguns comandos Git que usam a ID "SHA" ou "hash" podem ser mais difíceis de usar, pois a ID SHA para os commits originais é perdida. Por exemplo, usar git rerere pode não ser tão eficaz.

Para obter mais informações, consulte "Configurar combinação de commits por squash para pull requests".

Fazer rebase e merge de seus commits

When you select the Rebase and merge option on a pull request on sua instância do GitHub Enterprise Server, all commits from the topic branch (or head branch) are added onto the base branch individually without a merge commit. Pull requests with rebased commits are merged using the fast-forward option.

To rebase and merge pull requests, you must have write permissions in the repository, and the repository must allow rebase merging.

The rebase and merge behavior on GitHub Enterprise deviates slightly from git rebase. Rebase and merge on GitHub will always update the committer information and create new commit SHAs, whereas git rebase outside of GitHub does not change the committer information when the rebase happens on top of an ancestor commit. For more information about git rebase, see the "Git rebase" chapter from the Pro Git book.

For a visual representation of git rebase, see The "Git Branching - Rebasing" chapter from the Pro Git book.

Antes de habilitar o rebase de commit, leve em consideração estas desvantagens:

  • Os contribuidores do repositório podem ter que fazer rebase na linha de comando, resolver conflitos e forçar push de suas alterações no branch de tópico da pull request (ou branch de head remoto) para que possam usar a opção rebase and merge (fazer rebase e merge) no sua instância do GitHub Enterprise Server. O push forçado deve ser feito com cuidado para que os contribuidores não substituam o trabalho que outras pessoas usaram como base para o respectivo trabalho. Para saber mais sobre quando a opção Rebase and merge (Fazer rebase e merge) é desabilitada no sua instância do GitHub Enterprise Server e sobre o fluxo de trabalho para reabilitá-la, consulte "Sobre merges de pull request".

Para obter mais informações, consulte "Configurar rebase de commit para pull requests".

Você conseguiu encontrar o que estava procurando?

Pergunte a uma pessoa

Não consegue encontrar o que procura?

Entrar em contato