Skip to content
Latchkey

O Que É um Fork?

Um fork é a sua própria cópia no servidor do repositório de outra pessoa, onde você pode fazer alterações livremente e propô-las de volta via pull request.

Um fork é como você contribui para um projeto ao qual não tem acesso de escrita. Em vez de criar uma branch dentro do repositório original, você copia o todo para a sua própria conta, trabalha ali e abre um pull request de volta para o original. É a espinha dorsal da colaboração open-source.

Fork versus clone

Um clone copia um repositório para a sua máquina local. Um fork o copia na plataforma de hospedagem para o seu próprio namespace. Você normalmente faz o fork no servidor e depois clona seu fork localmente. O fork dá a você um lugar para fazer push mesmo quando não pode fazer push para o original.

O fluxo fork-and-pull

Você faz o fork do projeto upstream, clona seu fork, adiciona o original como um remote chamado upstream e mantém seu fork sincronizado.

Setting up a fork
gh repo fork owner/project --clone
git remote add upstream https://github.com/owner/project.git
git fetch upstream

Propondo alterações de volta

Você faz push de uma branch para o seu fork e abre um pull request tendo como alvo o repositório original. Os mantenedores o revisam ali. Como você é dono do fork, pode iterar livremente sem precisar de nenhuma permissão no projeto upstream.

Forks e CI/CD

Pull requests de forks levantam uma questão de segurança: o autor do fork não deve ganhar automaticamente acesso aos secrets do projeto upstream. As plataformas de CI executam PRs de forks com permissões restritas e exigem aprovação do mantenedor antes que workflows que precisam de secrets rodem, protegendo deploy keys e tokens de código não confiável.

Mantendo um fork atualizado

  • Adicione o repositório original como um remote upstream.
  • Faça fetch e merge das alterações do upstream regularmente para evitar divergência.
  • Abra pull requests a partir de uma branch de feature, não da sua branch padrão.
  • Espere permissões de CI restritas em pull requests de forks.

Principais conclusões

  • Um fork é uma cópia de um repositório no servidor, no seu próprio namespace.
  • Ele impulsiona a contribuição open-source através do fluxo fork-and-pull.
  • O CI restringe secrets em pull requests de forks para proteger código não confiável.

Guias relacionados