Componentes do fluxo do GitHub
Nesta unidade, estamos analisando os seguintes componentes do fluxo do GitHub:
- Ramos
- Consolidações
- Pedidos Pull
- O Fluxo do GitHub
- Fluxo Git
Componentes do fluxo do GitHub
Antes de entrarmos em fluxos de trabalho específicos do GitHub, é útil entender que o GitHub Flow se baseia diretamente nos conceitos fundamentais do Git.
O Git fornece ferramentas para rastrear e gerenciar alterações em seu código ao longo do tempo. O GitHub se baseia nisso, facilitando o uso dessas ferramentas com recursos como ramificações, confirmações, solicitações pull e interfaces visuais para colaboração. Vamos começar observando como esses conceitos funcionam no GitHub.
O que são sucursais
Na última seção, criamos um novo arquivo e uma nova ramificação em seu repositório.
As filiais são uma parte essencial da experiência do GitHub. Eles permitem que você faça alterações sem afetar a ramificação padrão.
Sua filial é um lugar seguro para experimentar novos recursos ou correções. Se você cometer um erro, poderá reverter suas alterações ou enviar mais alterações para corrigir o erro. Suas alterações não serão atualizadas na ramificação padrão até que você mescle sua ramificação.
Nota
Como alternativa, você pode criar uma nova filial e fazer check-out usando o git em um terminal. O comando seria git checkout -b newBranchName
O que são compromissos
Na unidade anterior, você adicionou um novo arquivo ao repositório enviando uma confirmação. Vamos rever brevemente o que são compromissos.
Uma confirmação é uma alteração em um ou mais ficheiros num ramo. Cada confirmação é rastreada por um ID exclusivo, carimbo de data/hora e contribuidor, independentemente de ser feita através da linha de comando ou diretamente na interface web do GitHub. As confirmações fornecem uma trilha de auditoria clara para qualquer pessoa que revise o histórico de um arquivo ou item vinculado, como um problema ou solicitação pull.
Você pode criar uma confirmação usando o Git em seu terminal com:
git commit -m "Add a helpful commit message"
Dentro de um repositório git, um arquivo pode existir em vários estados válidos à medida que passa pelo processo de controle de versão. Os estados primários de um arquivo em um repositório Git são Untracked e Tracked.
Não rastreado: Um estado inicial de um arquivo quando ele ainda não faz parte do repositório Git. O Git desconhece a sua existência.
Acompanhado: Um arquivo rastreado é aquele que o Git está monitorando ativamente. Pode estar em um dos seguintes subestados:
- Não modificado: O arquivo é rastreado, mas não foi modificado desde a última confirmação.
- Modificado: O arquivo foi alterado desde a última confirmação, mas essas alterações ainda não foram preparadas para a próxima confirmação.
- Encenado: O arquivo foi modificado e as alterações foram adicionadas à área de preparo (também conhecida como índice). Estas alterações estão prontas a ser concretizadas.
- Cometido: O ficheiro está na base de dados do repositório. Ele representa a versão confirmada mais recente do arquivo.
Esses estados ajudam sua equipe a entender o status de cada arquivo e onde ele está no processo de controle de versão.
O que são pedidos Pull?
Uma pedido de pull é o mecanismo usado para sinalizar que as confirmações de uma ramificação estão prontas para serem integradas em outra ramificação.
O membro da equipe que envia a solicitação pull pede a um ou mais revisores que verifiquem o código e aprovem a mesclagem. Estes revisores têm a oportunidade de comentar as alterações, adicionar as suas próprias ou utilizar o pedido Pull para desenvolver a discussão.
O GitHub também suporta Solicitações pull de rascunho, que permitem abrir uma solicitação pull que ainda não está pronta para revisão.
Depois que as alterações forem aprovadas (se necessário), a ramificação de origem da solicitação pull (a ramificação de comparação) será mesclada na ramificação base.
Agora que você já viu como as ramificações, confirmações e solicitações pull funcionam, vamos mostrar como elas se unem no GitHub Flow.
O fluxo do GitHub
O fluxo do GitHub é um fluxo de trabalho simples que ajuda você a fazer e compartilhar alterações com segurança. É ótimo para experimentar ideias e colaborar com a sua equipe usando ramificações, pull requests e merges.
Nota
O fluxo do GitHub é um dos vários fluxos de trabalho populares. Outros incluem fluxo Git e desenvolvimento baseado em tronco.
Agora que sabemos o básico do GitHub, podemos percorrer o fluxo do GitHub e seus componentes.
- Comece criando uma ramificação para que suas alterações, recursos ou correções não afetem a ramificação principal.
- Em seguida, faça suas atualizações na filial. Se o seu fluxo de trabalho oferecer suporte a isso, você poderá implantar alterações dessa ramificação para testá-las antes da mesclagem.
- Agora, abra um pull request para convidar feedback e começar uma revisão.
- Em seguida, revise os comentários e faça as atualizações necessárias com base no feedback da sua equipe.
- Finalmente, quando estiver confiante nas suas alterações, obtenha aprovação e mescle o pull request na ramificação principal.
- Depois disso, exclua a ramificação para manter o repositório limpo e evite o uso de ramificações desatualizadas.
Fluxo Git
Enquanto o GitHub Flow é um fluxo de trabalho leve projetado para entrega contínua, o Git flow é um modelo de ramificação mais estruturado, frequentemente usado em ambientes orientados por liberação. O fluxo do Git existe há mais tempo do que o fluxo do GitHub, e você ainda pode ver o termo master usado em vez de main como a ramificação padrão.
Tipos de ramificação Git Flow
O Git flow utiliza várias ramificações de longa duração e temporárias.
- master: Sempre reflete o código pronto para produção.
- develop: contém o trabalho de desenvolvimento mais recente para a próxima versão.
-
feature/*: Usado para criar novas funcionalidades; ramificado de
develope integrado de volta quando concluído. -
release/*: Prepara uma nova versão de produção de
develop; permite testes finais e pequenas correções de bugs. -
hotfix/*: Usado para corrigir rapidamente problemas de produção; ramificado a partir de
master.
Como funciona o processo de fluxo Git
- Os desenvolvedores criam ramificações de
developrecursos para criar novas funcionalidades. - Quando chega a hora de um release, um ramo de release é criado a partir de
develop. Isso isola o trabalho de preparação da liberação para que o desenvolvimento possa continuar ininterruptamente. - Correções de bugs podem ser adicionadas ao ramo de lançamento, mas os principais recursos devem esperar por uma versão posterior.
- Uma vez pronta, a ramificação de lançamento é fundida em
mastere marcada com um número de versão associado. O GitHub pode usar essas tags para ajudá-lo a gerar notas de versão. - A mesma ramificação de lançamento deve ser mesclada novamente em
developpara mantê-la sincronizada. - Se surgir um bug crítico de produção, uma ramificação de correção urgente será criada a partir de
master. Uma vez corrigido, é mesclado emmasteredevelop.
Quando usar o fluxo Git
- Mais adequado para projetos com versões programadas ou versionadas
- Útil se você mantiver várias versões de produção (por exemplo, ramificações de suporte de longo prazo)
- Ideal para ciclos de desenvolvimento mais lentos e estruturados (por exemplo, ambientes empresariais ou regulamentados)
- Considerado mais "pesado" do que o GitHub Flow devido ao gerenciamento adicional de filiais
Nota
O fluxo Git pressupõe confirmações de mesclagem para integrar ramificações. O uso de mesclagens de rebase ou squash pode interferir na estrutura da filial e no rastreamento do histórico.
Para muitas equipes que usam o GitHub, o GitHub Flow é mais simples e rápido. Mas se sua equipe valoriza a previsibilidade e precisa de mais planejamento de lançamento, o fluxo Git pode ser uma opção melhor.
Parabéns! Você acabou de percorrer todo o fluxo do GitHub e explorou como o fluxo do Git oferece uma alternativa estruturada para projetos orientados por lançamento.
Vamos passar para a próxima seção, onde abordaremos as diferenças entre questões e discussões.