Git: O Guia Essencial para dev jr
O Git é o sistema de controle de versão mais utilizado no mercado de desenvolvimento de software. Ele permite que você acompanhe mudanças no código, trabalhe em equipe de maneira eficiente e mantenha um histórico confiável de cada alteração feita no projeto. Neste artigo, vamos abordar desde o básico de como iniciar um repositório até a resolução de conflitos e o fluxo de trabalho mais comum para equipes de desenvolvimento.
1. O que é Git?
O Git é um sistema de controle de versão distribuído, criado por Linus Torvalds em 2005, que permite:
- Acompanhar mudanças no código.
- Trabalhar em ambientes colaborativos.
- Reverter para estados anteriores do projeto sem perder histórico.
Diferentemente de sistemas centralizados (como o SVN), o Git mantém um repositório completo em cada máquina que o utiliza, o que dá mais segurança e flexibilidade ao desenvolvimento.
2. Instalando e Configurando o Git
Para começar a usar o Git, você precisa instalá-lo em sua máquina e configurá-lo adequadamente.
Instalação
- Windows: Baixe em [git-scm.com](https://git-scm.com/download/win), execute o instalador e siga as instruções.
- Linux (Ubuntu/Debian)**: Use o comando `sudo apt-get install git`.
- macOS: Você pode instalar via Homebrew (caso tenha instalado) com `brew install git` ou baixar em [git-scm.com](https://git-scm.com/download/mac).
Configuração Inicial
Após instalar, abra o terminal e configure o nome de usuário e o e-mail para ser usado nos commits:
git config --global user.name "Seu Nome"
git config --global user.email "seuemail@exemplo.com"
Para verificar a configuração:
git config --list
3. Inicializando um Repositório
Para iniciar um projeto com Git, basta entrar na pasta do seu projeto e executar:
git init
Isso criará uma pasta oculta chamada `.git`, onde todas as informações de controle de versão serão armazenadas.
4. Principais Comandos do Git
O Git possui vários comandos importantes para o dia a dia de um desenvolvedor. Abaixo, listamos os mais usados:
- git status: Mostra o estado do repositório, informando arquivos modificados, não rastreados e prontos para commit.
- git add <arquivo>: Adiciona um arquivo específico à “área de stage” (zona intermediária antes de confirmar as alterações). Para adicionar todos os arquivos modificados, use: `git add .`
- git commit -m "mensagem do commit": Registra as mudanças adicionadas com uma mensagem descrevendo o que foi feito.
- git push: Envia seus commits locais para o repositório remoto (por exemplo, no GitHub ou GitLab).
- git pull: Puxa as atualizações do repositório remoto para o local, unindo alterações que outros desenvolvedores possam ter feito.
- git clone <url>: Faz uma cópia de um repositório remoto para sua máquina local.
- git branch: Mostra as branches existentes no repositório local. Para criar uma nova branch: `git branch nome-da-branch`
- git checkout <branch>: Muda para a branch especificada. Para criar e já mudar para a nova branch: `git checkout -b nome-da-branch`
- git merge <branch>: Mescla a branch especificada na branch em que você está no momento.
5. Fluxo de Trabalho (Git Workflow)
Existem vários fluxos de trabalho no Git. Um muito comum em equipes é o seguinte:
1. Branch `main` (ou `master`): É a branch principal, onde o código de produção é mantido. Deve sempre estar estável.
2. Branch de Desenvolvimento (`develop` ou `dev`): Onde acontecem integrações mais frequentes do trabalho da equipe. A cada feature finalizada, é feito o merge para cá, e quando uma versão está pronta, faz-se o merge para a `main`.
3. Feature Branch: Para desenvolver uma nova funcionalidade (feature), cria-se uma branch a partir da `develop`. Exemplo:
git checkout develop
git checkout -b feature/nome-da-feature
6. Pull Request: O que é e Como Fazer
O Pull Request (PR) é uma solicitação para mesclar suas alterações de uma branch para outra no repositório remoto. É útil para revisão de código por colegas, detecção precoce de problemas e para documentar o histórico de decisões.
Passo a Passo Básico para um Pull Request
1. Crie sua branch a partir de `main` ou `develop`.
2. Faça as alterações, commits e push nessa branch.
3. Vá ao repositório remoto (GitHub, GitLab, etc.) e clique em New Pull Request (ou equivalente).
4. Escolha a branch base (geralmente `develop` ou `main`) e a branch que você alterou.
5. Descreva as mudanças (o que foi feito, como testar, etc.).
6. Aguarde a revisão e aprovações antes do merge.
7. Merge: Unindo Código
Para unir (mesclar) o trabalho de duas branches, usa-se o comando `git merge`.
- Geralmente, você se posiciona na branch que deseja incorporar as mudanças e executa o merge da branch de onde vêm as alterações.
8. Resolvendo Conflitos
Conflitos acontecem quando duas (ou mais) pessoas modificam a mesma parte de um arquivo de forma diferente, e o Git não sabe qual mudança adotar. O processo de resolução é:
1. Identificar o conflito
Ao tentar dar um merge ou pull, o Git exibirá mensagens de conflito, e o `git status` mostrará os arquivos em conflito.
2. Abrir o arquivo com conflito
Você verá algo como:
<<<<<<< HEAD
Conteúdo da sua branch
=======
Conteúdo da outra branch
>>>>>>> feature/outro-desenvolvedor
3. Editar o arquivo
Remova as marcações (`<<<<<<<`, `=======`, `>>>>>>>`) e decida manualmente qual conteúdo manter (ou combine as mudanças).
4. Adicionar e fazer commit
Após resolver o conflito e salvar o arquivo, rode:
git add nome-arquivo
git commit -m "Resolve conflito no arquivo X"
O merge então será concluído.
9. Dicas e Boas Práticas para Desenvolvedores Júnior
- Commits Frequentes e Mensagens Claras: Faça commits menores e frequentes. Use mensagens que descrevam claramente o que foi alterado.
- Atualize Sua Branch Antes de Começar: Sempre dê um `git pull` (ou `git fetch` + `git merge`) na branch base para evitar conflitos futuros.
- Branches Curto-Prazo: Crie branches para cada funcionalidade/issue e faça merges regularmente. Evite trabalhar muito tempo em uma mesma branch sem sincronizar, pois os conflitos podem se acumular.
- Revisões de Código: Participe ativamente de revisões de código, tanto revisando quanto recebendo feedback. É uma oportunidade de aprendizado e melhora da qualidade do projeto.
- Crie um `.gitignore`: Ignore arquivos que não devem ir para o repositório (por exemplo, arquivos de configuração local, binários, dependências que podem ser instaladas via gerenciador de pacotes, etc.).
Conclusão
O Git é uma ferramenta essencial para qualquer desenvolvedor. Aprender seus conceitos básicos e boas práticas pode fazer uma grande diferença no trabalho em equipe.