git

histórico, conceitos, fluxos e prática

— Frank Lima

O que é

É uma prática essencial no desenvolvimento de software que permite rastrear, acompanhar e gerenciar as alterações realizadas em um projeto, permitindo que desenvolvedores colaborem de forma eficaz.

Processos bem populares

Repositório

Onde se hospeda o projeto base.

1

Commit

É o ponto de salvamento no histórico do projeto. Ele registra um conjunto de mudanças com uma mensagem descritiva.

2

Stagging Area (Area de preparação)

Antes de registrar um commit, você escolhe quais arquivos ou mudanças quer incluir com o comando git add

3

Branch (Ramo)

É uma linha de desenvolvimento independente. Serve para isolar funcionalidades, ações ou testes sem interferir no código principal.

4

Merge

Usado para juntar o contéudo de uma branch com outra.

5

Merge Conflict (Conflito de Merge)

Ocorre quando duas branches alteram a mesma parte de um arquivo. O git não sabe qual versão manter, e precisa ser feito manual.

6

Processos bem populares

Clone

Copia um repositório remoto inteiro para uma máquina local para desenvolvimento.

7

Pull

Atualiza seu repositório local com mudanças que estão no repositório remoto.

8

Push

Envia suas alterações locais (commits) para o repositório remoto.

9

Processos bem populares

Histórico (Log)

Mostra todos os commits feitos no repositório, com data, autor e a mensagem.

10

Processos bem populares

Temos dois ambientes conhecidos como "Remoto" e "Local"

Como funciona ?

Remoto

Local

Repositório

Comandos

Comandos conhecidos

# 1. Criar um repositório Git
git init

# 2. Adicionar arquivos à área de preparação (Staging Area)
git add arquivo.txt

# 2.1 ou todos os arquivos:
git add .

# 3. Fazer um commit
git commit -m "Adiciona o arquivo de configuração inicial"

# 4. Ver o histórico de commits
git log

# 5. Criar um novo branch
git branch feature/login

Comandos conhecidos

# 6. Mudar para outro branch
git checkout feature/login

# 6.1 Cria e já troca
git checkout -b feature/login

# 7. Unir (merge) um branch com outro
git checkout main
git merge feature/login

# 8. Resolver conflitos (se houver)
git add arquivo_com_conflito.txt
git commit

# 9. Clonar um repositório remoto
git clone https://<provedor_git>.com/seu-usuario/seu-repositorio.git

# 10. Enviar alterações para o repositório remoto
git push origin main

# 11. Buscar e aplicar alterações do remoto
git pull origin main

Tree ou árvore é uma estrutura que representa um diretório (pasta) em um determinado commit.

Árvore do Git

Commit
  └── Tree (diretório raiz)
        ├── Blob (arquivo: main.py)
        ├── Blob (arquivo: README.md)
        └── Tree (subpasta: src/)
              ├── Blob (arquivo: app.py)
              └── Blob (arquivo: utils.py)

Resumo:

  • Um commit referencia uma tree;
  • A tree lista os arquivos e subdiretórios;
  • Cada arquivo é armazenado como um blob (contéudo puro, sem nome de arquivo);
  • Cada subdiretório é outra árvore (tree).

Árvore do Git

A Jetbrains possui um plugin instalado nativamente nas suas IDEs, para acionar basta apertar "Alt + 9" para abrir.

Exemplo no Pycharm:

Árvore do Git

Árvore do Git

Exercício: localize a arvore do git

Árvore do Git

Aqui temos as arvores daquele commit selecionado.

  1. Commits bem feitos: Mensagens claras e descritivas. Ex. Bom "Corrige erro de formatação no formulário de login". Ex. Ruim "Fix". Use o tempo verbal imperativo na mensagem e use sempre commits pequenos e focados;
  2. Branchs organizadas: Crie branchs por "feature, bugfix, ou refactor". Ex. "feature/create_user". Evite trabalhar direto na branch main ou master. Sempre busque apagar as branchs que ja foram mergeadas.

Boas práticas

3. Use .gitignore corretamente: evite enviar arquivos desnecessariamente como dependências 0

Boas práticas

Serif

By Frank Lima