1. O problema sem controle de versões: por que simplesmente copiar arquivos é uma má ideia
Vamos começar com uma situação do dia a dia. Imagine que você está trabalhando no seu projeto C#. Tudo vai bem até chegar a hora dos "experimentos". Você decide mudar algo, mas tem medo de quebrar a versão que funciona. O que fazer? Claro, copiar o projeto!
No fim, no seu disco aparecem obras-primas como estas:
MyProject/
├── Main.cs
├── Main_backup.cs
├── Main_final.cs
├── Main_final2.cs
├── Main_tochno_final.cs
├── Main_tochno_tochno_final.cs
Conhece essa situação? Agora imagine que um amigo entrou no projeto. Ele também gosta de copiar arquivos — só que do jeito dele. Como entender qual é a versão mais recente e funcional? Como saber quem mexeu em quê? Como voltar atrás se o experimento falhar?
Sem controle de versões:
- Fica fácil perder ou confundir o código que funciona.
- Não dá para "reverter" para uma versão antiga.
- Dificulta trabalhar em dupla ou em trio.
- Caos e medo de experimentar.
Exatamente esses problemas são resolvidos por sistemas de controle de versões — como o Git.
2. Por que o desenvolvedor precisa do Git?
Git — é um poderoso sistema de versionamento, usado para rastrear mudanças no código-fonte durante o desenvolvimento de software. Ele permite que desenvolvedores salvem diferentes versões dos arquivos e coordenem o trabalho de várias pessoas em um mesmo projeto.
Conceitos principais do Git:
Repositório
O repositório (ou "repo") é o lugar onde toda a história do projeto é armazenada, incluindo todas as mudanças e versões dos arquivos.
Commits
commit — é um estado salvo do projeto. Cada commit no Git contém informação sobre quais mudanças foram feitas no projeto, por quem e quando. Commits formam o histórico do projeto e permitem voltar a qualquer versão anterior.
gitGraph
commit id: "1"
commit id: "2"
commit id: "3"
commit id: "4"
commit id: "5"
commit id: "6"
Cada commit é um "snapshot" do projeto que segue o anterior, formando uma sequência de mudanças.
Branches
branch — é uma linha independente de desenvolvimento. Por padrão o Git cria a branch main. Você pode criar novas branches para desenvolver features ou correções e depois mesclá-las de volta na branch principal.
gitGraph
commit id: "1"
commit id: "2"
branch develop
commit id: "3"
commit id: "4"
commit id: "5"
checkout main
commit id: "6"
commit id: "7"
merge develop
commit id: "8"
commit id: "9"
A partir da branch principal main "brotou" a branch develop para desenvolvimento paralelo. Depois de terminar o trabalho, as mudanças de develop são mescladas de volta para main.
3. Comandos principais do Git (o que acontece por baixo do capô)
Abaixo está a lista de comandos básicos para trabalhar com Git pelo terminal. É importante entender quais comandos estão por trás de todas as operações. No entanto, vamos seguir o approach baseado em GUI e aprender a executar todas essas ações usando a interface gráfica do IntelliJ IDEA. Veja esses comandos como o que acontece "por baixo do capô".
| Comando | Descrição |
|---|---|
git init |
Inicializa um novo repositório Git no diretório atual. |
git clone |
Clona um repositório a partir de uma URL para um novo diretório. |
git add |
Adiciona arquivos ao índice para o próximo commit. |
git commit |
Persiste as mudanças preparadas no repositório. |
git push |
Envia as mudanças do repositório local para o remoto. |
git pull |
Atualiza a branch atual com a versão mais recente do repositório remoto. |
git branch |
Mostra, cria ou deleta branches. |
git merge |
Mescla as mudanças da branch especificada na branch atual. |
Esses comandos representam as ferramentas básicas do Git, permitindo gerenciar mudanças de código, branches e merges em projetos de qualquer tamanho.
sequenceDiagram
participant Diretorio de trabalho
participant Area de indexacao (Staging)
participant Repositorio local
participant Repositorio remoto
Diretorio de trabalho ->> Area de indexacao (Staging): git add (Preparar)
Area de indexacao (Staging) ->> Repositorio local: git commit (Salvar localmente)
Repositorio local ->> Repositorio remoto: git push (Enviar para o servidor)
Repositorio remoto ->> Diretorio de trabalho: git pull (Baixar atualizações)
4. Três lugares onde o código é armazenado
Quando você usar um sistema de controle de versões para seu código, ele, em termos gerais, vai ser armazenado em três lugares:
1. Repositório remoto
Esse é o lugar centralizado para guardar seu código, normalmente hospedado em serviços como GitHub, GitLab ou Bitbucket. Eles fornecem armazenamento centralizado e são a base para trabalho colaborativo. O repositório remoto também serve como ponto de integração para automação, como build, testes e deployment de aplicações.
2. Repositório local
O repositório local é sua cópia pessoal do código, armazenada na sua máquina. Nesse repositório você pode executar todas as operações do Git (commits, branching, merges) sem precisar de conexão com a internet.
3. Diretório de trabalho
O diretório de trabalho no seu computador contém os arquivos atuais do projeto com os quais você está trabalhando no momento. É o lugar onde você vê e edita arquivos, adiciona novas funcionalidades ou corrige bugs.
Esses componentes juntos fornecem uma infraestrutura poderosa para gerenciar o código-fonte, permitindo aos desenvolvedores controlar o histórico do projeto e colaborar.
5. GitHub — seu portfólio
GitHub — é a principal plataforma web para hospedagem de código-fonte, que usa o sistema de controle de versões Git. Fundada em 2008, rapidamente se tornou uma das ferramentas-chave para desenvolvedores ao redor do mundo.
O GitHub permite que usuários criem repositórios para gerenciar projetos, controlar e rastrear mudanças no código e colaborar com outros desenvolvedores. Para o desenvolvedor moderno, um perfil no GitHub é uma parte importante do portfólio que pode ser mostrado a empregadores em potencial.
6. Criando seu primeiro repositório no GitHub
Passo 1. Vá para https://github.com e registre-se.
Passo 2. Clique no botão New repository para criar um novo repositório.
Passo 3. Defina as opções do repositório:
- Nome do repositório: escolha um nome significativo.
- Público ou privado: para projetos de estudo é melhor escolher "Public", para que outros possam ver.
- Add a README file: marque essa opção. README é o "rosto" do seu projeto.
- Add .gitignore: abra o dropdown e escolha o template para sua linguagem.
- Choose a license: pode pular esse passo.
- Clique em
Create repository.
Passo 4. Parabéns, seu primeiro repositório remoto foi criado!
7. Instalação e configuração do Git
Embora os fundamentos do Git possam ser aprendidos via comandos no terminal (como mostrado no vídeo), no dia a dia 99% dos desenvolvedores usam as ferramentas integradas na IDE. Nosso objetivo é ensinar você a trabalhar como os profissionais.
A interface para trabalhar com Git em todas as IDEs modernas da JetBrains — seja IntelliJ IDEA para Java/Kotlin, Rider para C# ou PyCharm para Python — é praticamente idêntica. Isso significa que, aprendendo a usar Git em uma dessas IDEs, você vai conseguir aplicar essas habilidades em qualquer outra. Por isso vamos usar o IntelliJ IDEA como exemplo universal. Tudo o que você ver aqui vai parecer e funcionar exatamente igual na sua IDE favorita.
Para usar o Git na sua máquina, primeiro é preciso instalá-lo. Se você estiver usando o IntelliJ IDEA, ela provavelmente vai sugerir instalar o Git automaticamente se não encontrar o programa no sistema. Recomendamos aceitar essa sugestão — é o caminho mais simples.
Feche o projeto atual escolhendo File > Close Project, e clique em Clone Repository.
Se você preferir instalar manualmente, use o site oficial: https://git-scm.com/downloads.
8. Um pouco de história: main vs master
Antes, a branch padrão no Git era chamada master. Porém, em 2020 a comunidade de desenvolvedores e grandes plataformas, incluindo o GitHub, migraram para um termo mais neutro — main.
É importante saber disso, porque em alguns artigos antigos ou projetos você ainda pode encontrar referência à branch master. Nas nossas aulas e em projetos modernos a branch principal sempre será main.
Mais sobre a migração para main pode ser encontrado nos links abaixo:
GO TO FULL VERSION