Voltar

Git e GitHub: Colaboração e Controle de Versão

Git é um poderoso sistema de controle de versão distribuído que permite a desenvolvedores e equipas rastrear e gerenciar alterações em seu código-fonte, documentos e qualquer conjunto de arquivos. O GitHub, por sua vez, é uma plataforma baseada na web que hospeda repositórios Git, fornecendo ferramentas robustas para colaboração, revisão de código e gerenciamento de projetos. Juntos, Git e GitHub são indispensáveis para o desenvolvimento de software moderno, garantindo organização, histórico completo e eficiência na colaboração.

Fundamentos do Git

O Git opera com uma série de conceitos fundamentais que são cruciais para entender como ele gerencia as mudanças e a colaboração.

Repositório (Repository)

Um repositório Git (ou "repo") é um diretório que contém todos os arquivos do seu projeto, juntamente com o histórico completo de todas as alterações. Pense nele como uma "base de dados" local que armazena todas as versões do seu projeto, permitindo que você volte a qualquer estado anterior.

Commit

Um commit é um "instantâneo" do seu repositório em um determinado momento. Cada commit representa um conjunto de alterações lógicas (por exemplo, a implementação de uma funcionalidade, a correção de um bug). Um commit sempre inclui uma mensagem descritiva que explica o que foi feito.

Branch (Ramificação)

Uma branch é uma linha independente de desenvolvimento. Elas permitem que você trabalhe em novas funcionalidades, experimentos ou correções de bugs em isolamento, sem afetar a linha principal do projeto (geralmente a branch main ou master). É como criar uma cópia do seu projeto para trabalhar e, depois de pronto, integrar de volta.

Merge (Mesclar)

Merge é o processo de integrar as alterações de uma branch para outra. Quando você termina de trabalhar em uma funcionalidade em uma branch separada, você a mescla de volta na branch principal para incorporar suas mudanças ao projeto.

Git // Dicionário do Programador

APRENDA GIT e GITHUB DO ZERO - guia completo

Tarefa Prática: Iniciando um Projeto com Git

Imagine que você está começando um novo projeto de site. Descreva os comandos Git que você usaria no seu terminal para:

  1. Inicializar um novo repositório Git na pasta do seu projeto.
  2. Criar um arquivo `index.html` e adicionar algum conteúdo básico a ele.
  3. Adicionar esse arquivo ao "staging area" do Git.
  4. Fazer o primeiro commit com uma mensagem descritiva.
  5. Verificar o status do seu repositório após o commit.

Comandos Git Essenciais

Conhecer os comandos certos é a chave para uma experiência fluida com Git. Aqui estão os mais utilizados:

git clone [URL]

Copia um repositório Git existente de um servidor remoto (como GitHub) para o seu computador local.

git clone https://github.com/usuario/meu-projeto.git

git status

Mostra o estado atual da sua área de trabalho e do staging area. Informa quais arquivos foram modificados, quais estão na área de staging e quais ainda não foram rastreados.

git status

git add [arquivo(s)] ou git add .

Adiciona alterações de arquivos para a "staging area" (área de preparação), que é um passo intermediário antes do commit. . adiciona todas as alterações.

git add index.html
git add .

git commit -m "Sua mensagem"

Registra as alterações que estão na staging area no histórico do repositório local. A mensagem é crucial para descrever as mudanças.

git commit -m "Adiciona cabeçalho e navegação inicial"

git branch [nome-do-branch]

Cria uma nova branch. Você ainda estará na branch atual após este comando.

git branch feature/nova-funcionalidade

git checkout [nome-do-branch] ou git switch [nome-do-branch]

Muda para uma branch existente. git switch é a forma mais moderna e recomendada.

git checkout dev
git switch feature/login

git checkout -b [novo-branch] ou git switch -c [novo-branch]

Cria uma nova branch E muda para ela em um único comando.

git checkout -b feature/cadastro
git switch -c fix/bug-layout

git merge [branch-a-mesclar]

Integra o histórico de commits da branch especificada na sua branch atual.

git merge feature/cadastro

git pull origin [branch]

Baixa as alterações do repositório remoto e as integra no seu repositório local (equivalente a git fetch + git merge).

git pull origin main

git push origin [branch]

Envia seus commits locais para o repositório remoto no GitHub (ou outro serviço).

git push origin feature/minha-funcionalidade

✨ Gerador de Mensagens de Commit com IA

Descreva brevemente uma alteração que você fez no código e clique no botão para gerar uma sugestão de mensagem de commit e uma breve explicação.

GitHub: A Plataforma de Colaboração

Enquanto o Git é a ferramenta de linha de comando para controlo de versão, o GitHub é uma plataforma online que hospeda os seus repositórios Git, elevando a colaboração e o gerenciamento de projetos a outro nível. Ele adiciona uma camada visual e diversas funcionalidades para tornar o trabalho em equipa mais eficiente.

GITHUB // Dicionário do Programador


Repositórios Remotos

No GitHub, os seus repositórios locais Git são espelhados em repositórios remotos. Isso permite que várias pessoas trabalhem no mesmo projeto, sincronizando suas alterações através de operações como git push (para enviar alterações) e git pull (para receber alterações).

Diagrama de Repositório Remoto

Pull Requests (PRs) / Merge Requests

Os Pull Requests (ou PRs) são o coração da colaboração no GitHub. Quando você termina de trabalhar em uma funcionalidade em uma branch, você abre um PR para propor a integração das suas alterações na branch principal. Isso permite que outros membros da equipa revisem o seu código (Code Review), deixem comentários, sugiram melhorias e aprovem as alterações antes que sejam mescladas.

Issues (Problemas/Tarefas)

A funcionalidade de Issues no GitHub é usada para rastrear bugs, tarefas, melhorias e novas funcionalidades. Cada issue pode ser atribuída a um membro da equipa, ter etiquetas (labels) para categorização (ex: "bug", "feature", "prioridade-alta") e ser vinculada a pull requests, fornecendo um registo transparente do progresso do projeto.

GitHub Actions: Automação de Workflows (CI/CD)

O GitHub Actions é uma plataforma de automação de fluxo de trabalho que permite automatizar, personalizar e executar workflows de desenvolvimento de software diretamente no seu repositório GitHub. Isso pode incluir tarefas como testar o código automaticamente (Integração Contínua - CI) ou fazer o deploy da aplicação (Entrega Contínua - CD) sempre que um Pull Request é mesclado.

GitHub Pages: Hospedagem de Sites Estáticos

O GitHub Pages é um serviço de hospedagem de sites estáticos diretamente a partir de um repositório GitHub. É uma ótima maneira de hospedar portfólios, blogs, documentações ou até mesmo pequenos projetos web de forma gratuita e simples.

Como usar Git e GitHub da Forma mais Fácil Possível

GitFlow e Estratégias de Branching

O GitFlow é um modelo de ramificação para o Git, introduzido por Vincent Driessen, que define um fluxo de trabalho rigoroso com branches de longa duração e de curta duração para gerenciar o desenvolvimento, lançamentos e hotfixes.

Branches Principais

  • main (ou master): Contém o histórico de releases oficiais, ou seja, o código de produção pronto para ser implantado.
  • develop: É a branch de integração para o desenvolvimento ativo. Todas as novas funcionalidades são mescladas aqui.

Branches de Suporte

  • Feature Branches: Criadas a partir de develop para desenvolver novas funcionalidades. Mescladas de volta em develop após a conclusão.
  • Release Branches: Criadas a partir de develop para preparar uma nova versão do produto. Permitem a correção de bugs finais e preparação da release sem interromper o desenvolvimento na develop. Mescladas em main e develop.
  • Hotfix Branches: Criadas a partir de main para corrigir bugs críticos em produção. Mescladas de volta em main e develop.

Git Flow // Dicionário do Programador

Tarefa Prática: Colaborando com GitHub Pull Requests

Imagine que você implementou a funcionalidade "Adicionar carrinho de compras" (da tarefa anterior) e agora precisa submeter seu trabalho para revisão no GitHub. Descreva o processo de criação de um Pull Request no GitHub, incluindo o que você incluiria na descrição do PR e por que a revisão por pares é importante.

Referências e Conteúdos Extras

Sites Oficiais e Documentação

Vídeos e Tutoriais

Cursos Online

Podcasts

Git e Github

Hipsters #109

Ver episódio no site
A preparar PDF...