Prof. Tiago Segato
Bem-vindo ao Módulo 2! Neste módulo, você aprenderá sobre o essencial do controle de versão com Git e como colaborar usando plataformas como GitHub e GitLab.
"O controle de versão é como uma máquina do tempo para o seu código, permitindo que você navegue pelo histórico e colabore sem medo."
Controle de Versão (Version Control System - VCS) é um sistema que registra alterações em um arquivo ou conjunto de arquivos ao longo do tempo, para que você possa recuperar versões específicas posteriormente.
Git é um sistema de controle de versão distribuído, gratuito e de código aberto, projetado para lidar com tudo, desde projetos pequenos até muito grandes, com velocidade e eficiência.
Criado por Linus Torvalds em 2005 para o desenvolvimento do kernel do Linux, após a comunidade Linux perder o acesso ao BitKeeper (um DVCS proprietário).
O Git se tornou o padrão de fato para controle de versão na indústria de software.
Antes de começar a usar o Git, é importante configurá-lo com suas informações pessoais.
Visite git-scm.com/downloads para baixar e instalar o Git para o seu sistema operacional (Windows, macOS, Linux).
Essas configurações são usadas para identificar quem fez cada commit. Abra seu terminal ou prompt de comando:
Você também pode configurar seu editor de texto padrão, ferramenta de diff, entre outras opções.
Vamos começar com os comandos essenciais para iniciar um repositório e salvar suas alterações.
git initInicializa um novo repositório Git em um diretório existente ou cria um novo diretório vazio e o inicializa.
Isso cria um subdiretório oculto chamado .git que contém todos os arquivos necessários para o repositório.
git statusMostra o estado dos arquivos no diretório de trabalho e na staging area (arquivos modificados, adicionados, etc.).
git add <arquivo> ou git add .Adiciona alterações do diretório de trabalho para a staging area, preparando-as para o próximo commit. Use . para adicionar todos os arquivos modificados e novos.
git commit -m "mensagem descritiva"Salva as alterações da staging area permanentemente no histórico do repositório com uma mensagem que descreve as mudanças.
Continuando com comandos para visualizar o histórico e gerenciar alterações.
git logMostra o histórico de commits do repositório, do mais recente ao mais antigo. Cada commit tem um hash SHA-1 único.
git diffMostra as diferenças entre o diretório de trabalho e a staging area, ou entre a staging area e o último commit, ou entre dois commits.
git restore <arquivo>Descarta alterações no diretório de trabalho, restaurando o arquivo para a versão do último commit (ou da staging area se --staged for usado).
Cuidado: git reset é um comando mais poderoso e complexo para desfazer commits, use com cautela.
Repositórios remotos são versões do seu projeto hospedadas na internet ou em uma rede (Ex: GitHub, GitLab).
git remote add <nome> <url>Adiciona um novo repositório remoto. O nome comum para o principal remoto é origin.
git clone <url>Cria uma cópia local de um repositório remoto existente.
git pull <remoto> <branch>Busca alterações do repositório remoto e as mescla na sua branch local atual. (Equivalente a git fetch seguido de git merge).
git push <remoto> <branch>Envia seus commits locais para o repositório remoto.
Embora a linha de comando seja poderosa, ferramentas visuais (GUIs) podem facilitar a visualização do histórico e a execução de operações Git.
Experimente diferentes ferramentas para encontrar a que melhor se adapta ao seu fluxo de trabalho.
GitHub é uma plataforma de hospedagem de código-fonte e arquivos com controle de versão usando Git. É muito mais do que apenas um lugar para armazenar código; é uma plataforma de colaboração.
git remote add origin <URL_DO_REPOSITORIO_NO_GITHUB> e depois git push -u origin main (ou a branch principal do seu projeto).
O GitHub oferece diversas ferramentas para facilitar a colaboração em projetos.
Usadas para rastrear tarefas, bugs, melhorias e outras discussões relacionadas ao projeto. Cada issue pode ter responsáveis, etiquetas (labels) e marcos (milestones).
O coração da colaboração no GitHub. Quando você quer propor alterações para um repositório (especialmente em um projeto colaborativo ou open source), você cria um Pull Request. Ele permite que outros revisem seu código, discutam as mudanças e, se aprovado, mesclem suas contribuições na branch principal.
Fluxo típico de um Pull Request:
git checkout -b minha-feature).git push origin minha-feature).Parte integral dos Pull Requests. Permite que outros desenvolvedores comentem linha por linha sobre as alterações propostas, sugerindo melhorias e identificando possíveis problemas antes da mesclagem.
GitLab é uma plataforma DevOps completa, entregue como uma única aplicação. Assim como o GitHub, oferece hospedagem de repositórios Git, mas se destaca por integrar todo o ciclo de vida de desenvolvimento de software.
Embora o GitHub seja mais popular para projetos open source, o GitLab é uma escolha forte para empresas que buscam uma solução DevOps unificada e com opções de auto-hospedagem.
Branches (Ramificações) são ponteiros móveis para um commit. São uma das funcionalidades mais poderosas do Git, permitindo divergir da linha principal de desenvolvimento e continuar trabalhando sem bagunçar essa linha.
main ou master).Por padrão, a branch principal de um novo repositório é chamada master ou, mais recentemente, main.
Imagine branches como linhas de desenvolvimento paralelas que podem ser mescladas de volta à linha principal quando o trabalho estiver concluído.
"Branches são baratos e fáceis no Git. Use-os frequentemente!"
Gerenciar branches no Git é feito com alguns comandos simples.
git branchLista todas as branches locais. A branch atual é marcada com um asterisco (*).
git checkout <nome-da-branch> ou git switch <nome-da-branch> (mais novo)Muda para a branch especificada.
git merge <nome-da-branch>Mescla as alterações da branch especificada na branch atual. Esteja na branch que vai receber as alterações (ex: main) antes de rodar o merge.
git branch -d <nome-da-branch>Deleta uma branch local (apenas se já foi mesclada). Use -D para forçar a deleção.
Resolução de Conflitos: Se o Git não conseguir mesclar automaticamente as alterações (arquivos modificados em ambas as branches nas mesmas linhas), ocorrerá um conflito de merge. Você precisará editar os arquivos para resolver os conflitos e depois fazer um commit.
O GitHub Flow é um fluxo de trabalho simples e popular para colaboração usando Git e GitHub.
main). Dê um nome descritivo (ex: feature/adicionar-login, fix/bug-no-carrinho).main). A branch da feature pode ser deletada após o merge.main sempre em estado de deploy (pronta para produção).main frequentemente (git pull origin main na sua branch e resolva conflitos) para evitar grandes divergências.
Você concluiu o Módulo 2: Git, GitHub e GitLab. Agora você tem uma compreensão sólida sobre: