Entendendo o fluxo de trabalho completo no Github

Sumário

O que é Github?

Segundo a própria página do Github ela é uma plataforma completa de desenvolvimento para construir, escalar e entregar software seguro.

A plataforma foi fundada em 2008 e é a mais conhecida para versionamento de código, colaboração, desenvolvimento em nuvem, automatizações e muito mais. É uma ferramenta poderosa e essencial e tem sido utilizada também para exibir portfólio por muitos desenvolvedores.

São mais de 83 milhões de desenvolvedores utilizando a plataforma para construir novos projetos, criando novas features para projetos existentes, colaborando em projetos open sources, corrigindo bugs, etc.

Para este tutorial você precisa ter uma conta no GitHub. Fique tranquilo, você pode utilizá-lo para guardar seus projetos públicos e também os privados utilizando planos gratuitos.

Criar e configurar um repositório

Um repositório mantém um projeto e este projeto pode conter qualquer tipo de arquivo: pastas, imagens, scripts, videos, etc.

Quando criamos um repositório, o próprio Github sugere a criação de um arquivo ReadME. Este arquivo serve para descrever informações sobre o seu projeto.

Em sua conta do Github, na página inicial ou na aba de repositórios, clique no botão verde New.

Criando um novo repositório

Vamos criar o repositório Olá Mundo, mas um detalhe importante: não utilize acentos nem espaços nos nomes, os caracteres serão removidos e o seu repositório vai ficar com nome errado.

Defina se o repositório será público ou privado e marque a opção para adicionar o arquivo ReadMe e clique em criar repositório. Você vai ter uma tela parecida com essa:

Nosso primeiro repositório no Github

Criar um Branch

Por padrão o branch principal se chama main e ele é considerado definitivo. Outros poderão ser criados a partir dele e serem evoluídos (atualizações nos arquivos) sem impactar no main. Quando quiser, dê um merge para o branch main para unir todas as versões novamente.

Utilizar branches permitirá a você ter diferentes versões do seu repositório e evoluir cada uma delas de forma separada e em algum momento unir todas elas em uma versão principal, ou não. Caso outras pessoas trabalhem em outros branches diferentes do seu, você poderá puxar essas atualizações quando quiser.

Para criar um branch clique sobre o botão do branch main, digite o novo branch e clique em criar branch a partir do main conforme a imagem. Veja que sempre criamos um branch a partir de outro. Esta ação cria uma cópia exata do branch de origem, então em projetos maiores saiba exatamente de onde você cria suas cópias.

A linha do tempo de dois branches

Eu criei o branch alteracao1 a partir do main e fiz 3 commits nele:

  • Adicionando index.html;
  • Adicionando um parágrafo;
  • Atualizando o parágrafo.

Depois fiz o merge dele no main e veja como ficou a linha do tempo. Eles ficaram separados durante o um tempo enquanto o alteracao1 recebia algumas alterações e logo depois foram unificados novamente.

Fazendo alterações nos arquivos e commits

Vamos fazer algumas alterações no branch alteracao1 que acabamos de criar. Clique em Add file e create new file conforme a imagem abaixo. Na nova tela informe o nome do arquivo e escreva algo na grande área em branco destinada para conteúdo.

Logo abaixo nesta nova tela, haverá uma caixa para o novo commit. Escreva algo informativo no título e dê um commit diretamente no branch alteracao1.

Repita esse processo mais duas ou três vezes realizando novas alterações no mesmo arquivo e fazendo o commit com um título informativo sobre as alterações que realizou.

Para editar o arquivo criado, vá para a tela principal (aba code), altere o branch para o alteracao1 e clique sobre o arquivo que deseja editar. Tenha certeza de estar no branch correto.

Criando pull requests

Agora que temos algumas atualizações no branch alteracao1 vamos criar uma pull request para mesclar nossas alterações no branch principal main.

Clique no link para abrir a tela com a lista de branches abertos.

Na nova tela, no branch alteracao1 clique no botão New Pull Request e uma página como esta vai abrir para você. Quero que observe alguns pontos importantes nesta tela.

Mais acima da tela, veja que o branch alteracao1 está sendo comparado com os arquivos do main e para lá que ele vai ser enviado e mesclado caso tudo ocorra bem. Na caixa de texto logo abaixo, é possível (e importante) colocar de forma resumida o que foi alterado em todos os arquivos desse branch que estamos querendo enviar para o main.

Mais abaixo da tela, vemos todos os arquivos que foram atualizados e quais são as diferenças entre a nova versão e a versão anterior que estava nesse mesmo branch. Clique em Create pull request.

Mesclando pull requests (merge no main)

Pull requests são solicitações de merge em um determinado branch. Elas são criadas por qualquer pessoa que trabalha no mesmo repositório e ficam aguardando alguém revistar o código e realizar o merge no main. Elas ficam disponíveis na aba Pull requests do repositório e nesta tela você tem acesso as PRs abertas e fechadas.

Vamos acessar esta tela e ver o que temos de bom por lá.

Clique sobre a PR que você criou e veja que o Github permite que você faça o merge para o branch que essa PR foi criada.

Mas como nem tudo são flores, as vezes existem conflitos…a vida é cheia de conflitos e aqui não seria diferente. Vamos ver um exemplo: eu fiz alterações no arquivo index.html e fiz um commit diretamente no branch main e, sem puxar as atualizações para o branch alteracao1 segui fazendo atualizações nele também.

Quando tentei dar um merge, o Github não entendeu qual arquivo é o correto e me deu esta opção de resolver conflito. Ao clicar em Resolve conflicts eu vejo a tela mais abaixo.

Tela de PR com conflito, mas vamos resolver logo abaixo
Resolvendo conflitos

A resolução de conflito nem sempre é simples, mas para entender, a ferramenta nos mostra as alterações feitas no branch alteracao1 e o que já existe no main. Você pode aceitar alteração de algum branch ou aceitar de ambos, apenas apagando o que não deve ficar ou organizando o arquivo do jeito certo.

Nesse caso deve ficar assim:

Após realizar os acertos, clique em Mark as resolved e depois commit merge na mesma tela.

O Github vai retornar para a tela da PR e vai permitir o merge, apenas clique no botão e seja feliz. Seu repositório estará atualizado.

O fluxo simplificado de trabalho com Github

Existem fluxos de trabalho de vários tipos com Github e outras ferramentas de versionamento, mas um jeito simples e funcional passa por proteger seu branch principal sempre que for possível.

Clonar o projeto para uma estação de trabalho, seja local ou na nuvem. Criar um novo branch a partir do branch principal e iniciar o seu trabalho (codifique como se não existisse o amanhã).

Faça commits sempre que finalizar algo relevante da funcionalidade que está trabalhando.

Guando terminar dê um push para o repositório remoto usando o mesmo nome que você criou na máquina local.

Vá no Github e crie uma Pull request para o branch principal ou para develop (isso deve ser combinado com sua equipe). Descreva na PR tudo que você fez nessa funcionalidade, como foi implementado, dê orientações de como testar a funcionalidade (isso ajuda muito).

Aguarde a devolutiva do pessoal que vai testar.

Conhecimento é algo que ninguém pode tirar de você e quando é compartilhado não se perde, multiplica.

Imagem de storyset no Freepik

5 comentários

  1. […] Neste post nós vimos o funcionamento do Github e agora sabemos que esta plataforma hospeda todo tipo de projeto e permite a colaboração com a equipe. No Github também é possível executar algumas ações como commits, merges, novos branches, etc, diretamente na web sem precisar executar comandos ou instalar algum programa no computador. […]

Os comentários estão fechados.