CodeGym /Cursos /C# SELF /Introdução ao Git: por que precisamos de controle de vers...

Introdução ao Git: por que precisamos de controle de versões

C# SELF
Nível 26 , Lição 0
Disponível

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:

  1. Nome do repositório: escolha um nome significativo.
  2. Público ou privado: para projetos de estudo é melhor escolher "Public", para que outros possam ver.
  3. Add a README file: marque essa opção. README é o "rosto" do seu projeto.
  4. Add .gitignore: abra o dropdown e escolha o template para sua linguagem.
  5. Choose a license: pode pular esse passo.
  6. 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:

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION