Forks são repositórios que se originam como cópias de outro repositório, conhecido como repositório upstream. Um fork tem suas próprias configurações e permissões, mas permanece conectado ao repositório upstream.
Ao visualizar um repositório bifurcado em GitHub, o repositório upstream é indicado abaixo do nome do fork.
O que torna os forks diferentes dos branches
Uma ramificação faz parte de um repositório. Um fork é um repositório separado com suas próprias configurações e espaço de colaboração.
Cada fork pode ter suas próprias:
- Branches
- Membros e discussões
- Problemas e pull requests
- Ações e projetos
- Marcas, rótulos e wikis
Quais repositórios podem ser clonados?
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, a menos que seja membro de um empresa com usuários gerenciados.
Políticas de repositório, organização e empresa podem limitar se os repositórios podem ser bifurcados e onde as bifurcações podem ser criadas. Para repositórios privados e internos, o acesso a forks também depende da visibilidade do repositório, da participação na organização e das configurações dos administradores.
Se você for membro de uma empresa com usuários gerenciados, restrições adicionais se aplicam aos repositórios que você pode bifurcar.
Os Contas de usuário gerenciadas não podem criar fork de repositórios de fora da empresa. Eles podem criar fork de repositórios privados ou internos pertencentes a organizações da empresa em seu namespace de conta de usuário ou em outras organizações pertencentes à empresa, conforme especificado pela política corporativa. Consulte Sobre o Enterprise Managed Users.
Consulte Gerenciando a política de bifurcação da sua organização e Aplicar as políticas de gerenciamento do repositório na sua empresa.
Visibilidade das bifurcações
A visibilidade de uma bifurcação está vinculada à rede de repositórios do repositório upstream. Os forks de repositórios públicos são públicos, e os forks de repositórios privados são privados. As bifurcações de repositórios internos são privadas. Você não pode alterar a visibilidade de um fork de forma independente.
Todos os repositórios em uma rede de repositório compartilham a mesma configuração de visibilidade. Uma rede de repositórios inclui o repositório original, suas bifurcações e as bifurcações dessas bifurcações. Consulte Entender conexões entre repositórios.
Excluir um repositório ou alterar sua visibilidade pode afetar a rede. Se você excluir uma bifurcação, as contribuições de código dessa bifurcação poderão permanecer acessíveis à rede do repositório.
O que acontece com os forks quando um repositório é excluído ou tem sua visibilidade alterada
Aviso
- Se você remover o acesso de uma pessoa a um repositório privado, todas as suas bifurcações desse repositório privado serão excluídas. Os clones locais do repositório privado são mantidos. Se o acesso de uma equipe a um repositório privado for revogado ou uma equipe com acesso a um repositório privado for excluída e os membros da equipe não tiverem acesso ao repositório por meio de outra equipe, as bifurcações privadas do repositório serão excluídas.
- Você é responsável por garantir que as pessoas que perderam o acesso a um repositório excluam qualquer informação confidencial ou de propriedade intelectual.
- Pessoas com permissões de administrador em um repositório privado ou interno podem impedir forks desse repositório, e os proprietários da organização podem impedir forks de qualquer repositório privado ou interno da organização. Para saber mais, confira Gerenciando a política de bifurcação da sua organização e Gerenciando a política de bifurcação para seu repositório.
Alterações de visibilidade podem separar as bifurcações em novas redes de repositórios, para que os proprietários de bifurcações existentes possam continuar trabalhando sem perda inesperada de acesso.
| Ação | Efeito nas bifurcações |
|---|---|
| Um repositório privado é excluído | Suas bifurcações privadas também são excluídas. |
| Um repositório público é excluído | Uma bifurcação pública ativa se torna o novo repositório original da rede. |
| Um repositório público é tornado privado | Suas bifurcações públicas permanecem públicas em uma rede separada. |
| Um repositório privado é tornado público | Os forks privados permanecem privados, mas se desconectam em redes privadas separadas. |
| Um repositório interno altera a visibilidade | As bifurcações pertencentes a organizações ou contas pessoais permanecem privadas. |
A mudança de um repositório público para privado também pode afetar a disponibilidade de estrelas, observadores, grafo de dependências, Dependabot alerts e code scanning. Examine cuidadosamente as configurações de visibilidade do repositório antes de alterá-las.
Permissões de forks
As bifurcações privadas herdam a estrutura de permissões do repositório ascendente. Isso ajuda os proprietários de repositórios privados a manter o controle sobre seus códigos. Por exemplo, se o repositório ascendente é privado e fornece acesso de leitura/gravação a uma equipe, essa equipe terá acesso de leitura/gravação para qualquer bifurcação do repositório privado ascendente. Somente as permissões de equipe (não as permissões individuais) são herdadas por forks privados.
Observação
Quando você altera as permissões base de uma organização, as permissões para bifurcações privadas não são atualizadas automaticamente. Para obter mais informações, confira Definindo permissões base para uma organização.
Os forks públicos não herdam a estrutura de permissões do repositório upstream. Os proprietários de forks controlam o acesso aos seus forks, mas as redes de repositórios ainda compartilham dados do Git. Commits enviados para qualquer repositório em uma rede podem ser acessados por outros repositórios nessa rede, incluindo o repositório upstream.
Ao criar um fork de um repositório público para sua conta pessoal, você pode permitir que os mantenedores do repositório upstream enviem commits para a ramificação da sua pull request. Isso pode ajudar os mantenedores a atualizar sua ramificação, executar testes ou resolver pequenos problemas antes de mesclar. Você não pode dar permissões de push a uma bifurcação de propriedade de uma organização. Consulte Allowing changes to a pull request branch created from a fork.
Conjuntos de regras de push para repositórios bifurcados
As regras de push se aplicam a toda a rede de bifurcação de um repositório, garantindo que cada ponto de entrada do repositório esteja protegido. Por exemplo, se você bifurcar um repositório que tenha conjuntos de regras por push habilitados, os mesmos conjuntos de regras por push também se aplicarão ao repositório bifurcado.
Para um repositório bifurcado, as únicas pessoas que têm permissões de bypass para uma regra de push são as pessoas que têm permissões de bypass no repositório raiz.
Consulte Sobre os conjuntos de regras.
Considerações importantes sobre segurança
Forks são ferramentas poderosas de colaboração, mas podem expor código e histórico de maneiras fáceis de passar despercebidas.
- Os forks têm permissões próprias e separadas do repositório de origem.
- Os proprietários de um repositório upstream podem ler todos os forks na rede de repositórios.
- Os proprietários da organização podem ter acesso administrativo a forks criados em namespaces pessoais.
- Remover o acesso de alguém ao repositório de origem nem sempre exclui forks em outras organizações.
- Commits podem permanecer acessíveis na rede de repositórios mesmo após a exclusão de um fork.
Antes de permitir bifurcações para trabalhos sensíveis, revise as permissões e o modelo de visibilidade do seu repositório ou organização.
Bifurcações em uma organização
As bifurcações dentro da mesma organização copiam as configurações de colaboradores e equipes do repositório original. A organização controla as permissões para essas bifurcações, e as equipes visíveis existentes podem manter o acesso.
Bifurcações em uma empresa
Repositórios internos suportam um único nível de bifurcação. Você não pode criar uma bifurcação de uma bifurcação privada de um repositório interno. Isso mantém o acesso e o gerenciamento mais simples para repositórios visíveis em uma empresa.