Skip to main content

Sobre bifurcações

Um fork é um novo repositório que compartilha configurações de código e visibilidade com o repositório "upstream" original.

Sobre bifurcações

Os forks permitem fazer alterações em um projeto sem afetar o repositório original, também conhecido como repositório "upstream". Após criar fork em um repositório, você pode buscar atualizações do repositório upstream para manter seu fork atualizado e propor alterações do fork para o repositório upstream com solicitações de pull. Um fork pode existir em uma conta pessoal ou em uma organização.

Quando você exibe um repositório bifurcado em GitHub, o repositório upstream é indicado abaixo do nome do fork.

Captura de tela da página de um repositório no GitHub. Abaixo do nome do repositório, "mona/docs", o texto "bifurcado do github/docs" é realçado em laranja.

Em projetos de código aberto, os forks são usados com frequência para iterar ideias ou alterações antes que elas sejam incorporadas ao repositório upstream. Se você bifurcar um repositório público para sua conta pessoa, fazer alterações e abrir uma solicitação de pull para propor suas alterações para o repositório upstream, você pode dar a qualquer pessoa que tenha acesso push ao repositório upstream a permissão para efetuar push de alterações no seu branch de solicitação de pull (incluindo apagar o branch). Isso agiliza a colaboração ao permitir que os mantenedores de repositório façam commits ou executem testes localmente em seu branch de solicitação de pull a partir de uma bifurcação de propriedade do usuário antes de fazer merge. Você não pode dar permissões de push a uma bifurcação de propriedade de uma organização. Para obter mais informações, confira "Permitir alterações em um branch de pull request criado a partir de bifurcação".

Excluir uma bifurcação não exclui o repositório upstream original. O código enviado por push para um fork ficará visível no upstream, mas as alterações não terão nenhum efeito imediato nas branches upstream. Por exemplo, você pode adicionar colaboradores, renomear arquivos ou gerar GitHub Pages no fork sem afetar as branches upstream. Depois que um fork é excluído, não é possível restaurá-lo. Para obter mais informações, confira "Restaurar um repositório excluído". Se você excluir um repositório privado, todas as bifurcações do repositório serão excluídas.

Você pode exibir, classificar e filtrar as bifurcações de um repositório na página de bifurcações do repositório. Para obter mais informações, confira "Entender conexões entre repositórios".

Sobre a criação de forks

Você pode criar fork em qualquer repositório público para sua conta pessoal ou para uma organização em que tenha permissão para criar repositórios. Se você tiver acesso a um repositório privado e o proprietário permitir a criação de fork, será possível criar fork do repositório para sua conta pessoal ou para uma organização no GitHub Team em que você tenha permissão para criar repositórios. Não é possível criar forks de um repositório privado em uma organização que usa o GitHub Free. Para obter mais informações sobre GitHub Team e GitHub Free, confira "Planos do GitHub".

Para obter instruções sobre como bifurcar um repositório, confira "Criar fork de um repositório". Para obter mais informações sobre quando você pode criar forks e as configurações de permissão e visibilidade de forks, confira "Sobre permissões e visibilidade de bifurcações".

Tip

Você pode usar GitHub Desktop para bifurcar um repositório. Para obter mais informações, confira "Clonagem e bifurcar repositórios do GitHub Desktop".

Bifurcar versus duplicar um repositório

Se você deseja criar um novo repositório a partir do conteúdo de um repositório existente, mas não quer fazer merge das suas alterações no upstream posteriormente, você poderá duplicar o repositório ou, se o repositório for um modelo, você poderá usar o repositório como um modelo. Para obter mais informações, confira "Duplicar um repositório" e "Criar um repositório a partir de um modelo".

Bifurcar um repositório é semelhante à duplicação de um repositório, com as diferenças a seguir.

  • O código enviado por push para um fork fica visível para todos os repositórios na rede de forks, mesmo depois que o fork é excluído.
  • Você pode usar uma solicitação de pull para sugerir alterações do seu fork para o repositório upstream.
  • Você pode transmitir alterações do repositório upstream para o seu fork sincronizando-os entre si.
  • Os forks têm membros, branches, marcas, rótulos, políticas, problemas, solicitações de pull, discussões, ações, projetos e wikis próprios deles.
  • Os forks herdam as restrições dos repositórios upstream deles. Por exemplo, as regras de proteção de branch não podem ser transmitidas se o repositório upstream pertencer a uma organização em um plano GitHub Free.

Leitura adicional