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 Enterprise Server, o repositório upstream é indicado abaixo do nome do fork.
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. 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ê poderá criar forks de um repositório privado ou interno para sua conta pessoal ou para uma organização em GitHub, no qual você tem permissão para criar repositórios, contanto que as configurações do repositório e as políticas corporativas permitam a criação de forks. Em geral, 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.
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.