Git e GitHub

Prof. Me. Danilo Bueno

Como gerenciar código?

  • Pensem no último projeto que fizeram!
  • Como controlaram os arquivos?
    • trabalho_novo? v2? v3? versao-final?
    • trabalho_data
    • trabalho_fulano_data
  • Como integraram os códigos?
  • Como uma empresa de software controla seu código?

Quão complexo é um software?

https://informationisbeautiful.net/visualizations/million-lines-of-code/

  • Exemplo: Google
    • 2 bilhões de linhas de código
    • 10 datacenters da empresa
    • chega a ocupar 85 terabytes
    • talvez o "maior repositório de código do mundo"
    • Como gerenciar tudo isso?

Git + GitHub

A resposta para essas perguntas

O que é Git?

  • Git é um sistema de controle de versão de arquivos.
  • Com ele, podemos desenvolver projetos nos quais diversas pessoas podem contribuir simultaneamente, editando e criando novos arquivos, sem o risco de suas alterações serem sobrescritas.
  • Criado em 2005 por Linus Torvalds (o mesmo criador do Linux).
  • Ele é open source (código aberto) e gratuito.
  • Ele é um programa que você instala na sua máquina e roda no terminal.

O que é GitHub?

  • O GitHub é um serviço web que oferece diversas funcionalidades extras aplicadas ao Git.
  • Exemplo: você pode usar gratuitamente o GitHub para hospedar seus projetos pessoais.
  • Muitos softwares, frameworks e bibliotecas estão no GitHub.
  • Pertence à Microsoft desde 2018.
  • É uma rede social de desenvolvedores!

Vamos dar uma olhada

  • Vamos abrir github.com juntos e navegar pela plataforma.
  • Reparem em: repositórios, perfis, commits, pull requests, issues.

Como Git e GitHub se conversam

Onde vive Como você acessa
Local Sua máquina Terminal (Git Bash)
Remoto Servidor do GitHub Navegador ou terminal
  • push: envia commits do seu computador pro GitHub
  • pull: traz commits do GitHub pro seu computador
  • clone: copia um repositório do GitHub pra sua máquina, pela primeira vez

Fonte: The Beginner's Guide to Git & GitHub, freeCodeCamp

O ciclo de vida de um arquivo

Etapa O que acontece
Workspace Onde você edita os arquivos normalmente
Staging Area Onde você "separa" o que vai entrar no próximo commit (git add)
Repositório Local Onde o commit fica registrado na sua máquina (git commit)
Repositório Remoto Onde o histórico é compartilhado com o time (git push / git pull)

Instalando o Git (Windows)

  • Baixe em git-scm.com ou gitforwindows.org
  • Instale com as opções padrão do instalador
  • ⚠️ Deixe marcada a opção Git Credential Manager durante a instalação (vem marcada por padrão)

Depois de instalar, clique com o botão direito numa pasta e escolha Git Bash Here para abrir o terminal ali.

Configurando o Git

Antes de usar, diga ao Git quem é você (só precisa fazer uma vez por máquina):

$ git config --global user.name "seu NOME"
$ git config --global user.email "seu EMAIL"

Criando o projeto

  • Vamos criar uma pasta chamada projeto-git e, dentro dela, um arquivo chamado citacoes.html
  • Dentro do arquivo, vamos colocar algumas citações
<!DOCTYPE html><html lang="pt-br">  <head>    <meta charset="UTF-8" />    <title>Citações</title>  </head>  <body>    <h1>Minhas citações favoritas</h1>    <blockquote>"A persistência é o caminho do êxito." (Charles Chaplin)</blockquote>  </body></html>

git init

No terminal, navegue até a pasta do projeto e execute:

$ git init
  • Transforma a pasta atual em um repositório Git.
  • O Git passa a controlar todas as alterações que ocorrem naquele diretório e em seus subdiretórios.

git status

O arquivo já está sendo versionado? Vamos verificar:

$ git status
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        citacoes.html

nothing added to commit but untracked files present (use "git add" to track)
  • Untracked = o Git vê o arquivo, mas ainda não está rastreando as mudanças nele.

git add

Para rastrearmos as alterações do arquivo, precisamos executar:

$ git add citacoes.html
$ git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   citacoes.html

git commit

  • git add separa o que vai entrar na próxima "foto" do projeto (a staging area).
  • git commit tira a foto e a guarda no histórico, com uma mensagem explicando o que mudou.
$ git commit -m "Meu primeiro commit"
[main (root-commit) 7b3ab1a] Meu primeiro commit
 1 file changed, 10 insertions(+)
 create mode 100644 citacoes.html

git log

Para ver o histórico de commits:

$ git log
commit 7b3ab1a8d5a94ce490bfa57670da14d9687f16c5 (HEAD -> main)
Author: seu-nome <[email protected]>
Date:   Tue Nov 3 12:20:08 2026 -0300

    Meu primeiro commit
  • Cada commit tem um identificador único, autor, data e mensagem.

GitHub

Compartilhando o projeto na nuvem

Compartilhando seu projeto no GitHub

  • Para que outras pessoas possam ver e contribuir com nosso projeto, precisamos publicá-lo na internet.
  • Utilizaremos o github.com.
  • O primeiro passo é criar uma conta gratuita no GitHub.

Criando o repositório

No GitHub, clique em New repository e preencha:

  • Repository name: projeto-git
  • Public ou Private (sua escolha)
  • Deixe as caixas de README/.gitignore/license desmarcadas por enquanto: já temos um projeto pronto localmente

Clique em Create repository.

Linkando seu projeto

Precisamos conectar o nosso repositório local ao repositório remoto que acabamos de criar:

$ git remote add origin https://github.com/seu-usuario/projeto-git.git
  • origin é só um apelido para essa URL remota: você vai usar esse nome nos próximos comandos.

Autenticação

Ao mandar seu código pro GitHub pela primeira vez, uma janela do navegador vai abrir pedindo login: isso é o Git Credential Manager, que veio junto com a instalação do Git.

  • Faça login normalmente com sua conta do GitHub.
  • Depois disso, o Git lembra suas credenciais nessa máquina.

git push

Agora sim, podemos enviar nossos commits para o GitHub:

$ git push -u origin main
  • -u (de upstream) liga esse branch local ao branch remoto: depois disso, um simples git push já basta.
  • Acesse a página do seu repositório no GitHub e confira: seu projeto está publicado!

git init vs. git clone

Hoje fizemos o fluxo de começar um projeto do zero: git init numa pasta vazia.

Mas no dia a dia, num emprego ou num projeto em grupo, isso é raro. Normalmente o repositório já existe, criado por outra pessoa.

Situação Comando
Projeto novo, começando do zero git init
Repositório que já existe (o caso mais comum!) git clone

git clone na prática

$ git clone https://github.com/usuario/repo.git
  • Baixa uma cópia completa do repositório pra sua máquina: arquivos e todo o histórico de commits.
  • Já cria a pasta do projeto e configura o remote origin automaticamente: não precisa rodar git remote add origin de novo.
  • Depois de clonar, o fluxo é o mesmo de sempre: editar → add → commit → push (ou pull, pra trazer o que os colegas já mandaram).

Recapitulando o fluxo

Workspace  →  git add  →  Staging Area  →  git commit  →  Repositório Local  →  git push  →  GitHub
  • Você edita → separa o que quer registrar → registra com uma mensagem → envia pra nuvem.

  • Para começar: git init (projeto novo) ou git clone (projeto que já existe, o mais comum na prática).

  • Spoiler dos exercícios em dupla: quando duas pessoas alteram a mesma linha de um arquivo, o Git não sabe sozinho qual versão manter. Isso se chama conflito de merge, e é normal! Vamos praticar como resolver.

Referências

Obrigado!

[email protected] · website/docs · github