Ao contribuir com um projeto, você precisa de um local seguro para escrever e refinar o código antes que ele afete sua base de código principal. Branches, bifurcações, confirmações e solicitações de pull funcionam em conjunto para fornecer esse espaço, para que você possa experimentar, fazer check-in de forma incremental e propor alterações concluídas para revisão.
Isolando seu trabalho com ramificações e bifurcações
A maioria dos trabalhos começa criando uma cópia isolada do código que você pode alterar livremente.
- Use um branch quando tiver acesso de gravação a um repositório. Um branch permite que você desenvolva um recurso, corrija um bug ou experimente em uma área contida do repositório sem afetar outros branches. Você cria um branch de um branch existente, geralmente o branch padrão.
- Use uma bifurcação quando você não tiver acesso de gravação ou quando quiser independência total do projeto original. Uma bifurcação é um repositório separado que compartilha configurações de código e visibilidade com o repositório "upstream" original. Ele tem seus próprios branches, problemas e solicitações de pull. Com uma bifurcação, você também pode abrir solicitações de pull para o repositório upstream.
Uma ramificação geralmente é a escolha mais simples quando você já colabora em um repositório compartilhado. Uma bifurcação geralmente é a melhor opção para código aberto contribuições, em que talvez você não tenha acesso de gravação ao repositório upstream.
Fazer check-in do trabalho com confirmações
Ao escrever código, você salva grupos pequenos e significativos de alterações como confirmações. Cada confirmação registra um instantâneo do seu trabalho junto com uma mensagem que descreve o que foi alterado, o que facilita o acompanhamento do histórico, revisão de alterações e compreensão de como o código evoluiu.
A confirmação com frequência no branch ou na bifurcação permite:
- Quebre uma alteração maior em etapas revisíveis.
- Reverta para um estado anterior se um experimento não der certo.
- Dê aos revisores um histórico claro de como você chegou à alteração final.
Propondo alterações com solicitações de pull
Quando seu trabalho estiver pronto para compartilhar, você abrirá uma solicitação de pull para propor a mesclagem de suas alterações no branch base. Uma solicitação de pull reúne suas confirmações, uma descrição da alteração e os revisores de ferramentas precisam discutir e avaliá-la antes de mesclar.
Você pode abrir uma solicitação pull enquanto o trabalho ainda está em andamento criando uma solicitação de pull de rascunho, que compartilha suas alterações sem solicitar formalmente a revisão. Isso é útil quando você deseja comentários antecipados ou deseja executar verificações automatizadas em seu código.
Mantendo seu código atual e otimizado
Enquanto uma solicitação de pull está aberta, o branch base pode continuar mudando à medida que outras pessoas mesclam seu trabalho. Para manter suas alterações limpas e reduzir conflitos, você pode:
- Mesclar ou rebasear o branch base em seu branch com frequência para que sua diferença permaneça focada no que sua alteração apresenta. GitHub mostra uma diferença de três pontos por padrão, que compara seu branch com o ponto em que ele divergiu da base.
- Rebasear para organizar um histórico de confirmação confuso — reordenando, combinando ou reformulando confirmações — antes de solicitar revisão.
- Resolva conflitos de mesclagem quando o Git não puder combinar automaticamente as alterações concorrentes.
Trabalhando em controles de repositório
Colaboradores experientes trabalham dentro dos guardrails definidos por um repositório. Esses controles moldam onde você pode efetuar push, quem deve aprovar seu trabalho e o que deve passar antes de mesclar.
- Branches e conjuntos de regras protegidos podem bloquear pushes diretos para branches importantes, exigir histórico linear ou confirmações assinadas e exigir verificações de status ou revisões antes de mesclar.
- Os proprietários de código são solicitados automaticamente para revisão quando a alteração toca os arquivos que possuem, portanto, planeje sua aprovação em áreas confidenciais.
- Os conjuntos de regras de push podem ser aplicados em uma rede de bifurcação, restringindo caminhos de arquivo, tamanhos ou nomes em cada bifurcação.
- Os ganchos de pré-recebimento permitem que os administradores GitHub Enterprise Server imponham verificações de política no servidor antes que as confirmações sejam aceitas.
Uma cadeia de ferramentas integrada
Solicitações pull conectam seu código à automação e aos serviços que ajudam você a escrever código de forma rápida e segura.
- Code scanning problemas de segurança de superfície e Dependabot dependências vulneráveis à medida que suas alterações passam por uma solicitação de pull, para que você possa aplicar práticas de codificação seguras antecipadamente.
- GitHub Actions pode executar a integração contínua em cada push para sua solicitação de pull, criando e testando suas alterações automaticamente.