Skip to content

griottt/task02-grupo04

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 

Repository files navigation

📘 Documentação Colaborativa Git - Task 02 (Grupo 04)

🏆 Créditos e Referências

Este projeto é parte do Módulo Geral do programa Vem Ser DBC, baseado no material de GIT, formulado pela instrutora Cristina Jung.


📋 Sobre o Projeto

Este documento serve como um guia prático e colaborativo sobre os principais comandos do Git, detalhando funcionamento, sintaxe e aplicação.

👥 Integrantes: A lista completa dos membros do grupo encontra-se no arquivo README-info.md.


⚙️ Workflow do Grupo

Seguimos o fluxo de branches: feat/* ➡️ develop ➡️ hml ➡️ main.

Branch Função
main 🚀 Produção (Código estável e finalizado).
hml 🧪 Homologação (Ambiente de testes do grupo).
develop 🚧 Desenvolvimento (Integração das features).

🛠️ Como Contribuir

  1. Crie uma branch a partir da develop: git checkout -b feat/documentacao-X (onde X é a letra do seu comando).
  2. Vá até a seção do seu comando neste arquivo.
  3. Substitua o texto (Aguardando conteúdo...) pelas informações técnicas.
  4. Não altere as seções dos colegas para evitar conflitos.
  5. Faça o Push e abra o Pull Request para develop.

📚 Guia de Comandos (Índice)

  1. Git Rebase
  2. Git Cherry Pick
  3. Git Revert
  4. Git Squash
  5. Git Reset
  6. Git Merge
  7. Git Log
  8. Git Checkout
  9. Git Commit
  10. Git Fetch e Git Pull

1. Git Rebase

🚀 Comando: git rebase

O que é: O git rebase é um comando do Git que permite integrar alterações de um branch em outro de uma forma linear e limpa. Ao contrário do git merge, que por padrão cria um novo commit de mesclagem. A ideia fundamental do git rebase é reaplicar os commits de um branch sobre o topo de outro.

💻 Sintaxe:

git rebase [parametros]

# Exemplos de parâmetros mais usados:
git rebase develop          # Reaplica seus commits no topo da develop
git rebase -i HEAD~N        # Modo interativo (para juntar/editar os últimos N commits)
git rebase --continue       # Continua o processo após resolver um conflito
git rebase --abort          # Cancela a operação e volta ao estado original

🎯 Quando usar:

  • Limpeza de Histórico: Ao invés de criar um commit de merge, que apenas registra que você fez a fusão, o rebase move seu trabalho para o topo. Isso faz com que seu branch pareça ter sido criado após as últimas alterações, resultando em um histórico mais limpo.

⚠️ Ponto de Atenção:

  • Conflitos: Se ocorrer um conflito de mesclagem durante esse processo, o git rebase será interrompido no primeiro commit problemático e deixará marcadores de conflito.

    Como resolver: Corrija o arquivo, use git add . (não faça commit!) e rode git rebase --continue.

  • Regra de Ouro: Jamais faça rebase em branches públicas (como develop ou main). Isso reescreve o histórico compartilhado e quebrará o trabalho dos outros integrantes.


2. Git Cherry Pick

🚀 Comando: git cherry-pick

O que é: Um comando cuja função é copiar as mudanças introduzidas por um único commit e aplica-las como um novo commit na branch em que você está.

💻 Sintaxe:

```bash
git cherry-pick [hash-do-commit]

# Exemplos de parâmetros mais usados:
git cherry-pick a1b2c3d           # Aplica o commit específico pelo Hash
git cherry-pick a1b2c3d..f4g5h6i  # Aplica um intervalo de commits
git cherry-pick --abort           # Cancela a operação em caso de conflito

🎯 Quando usar: O cherry-pick é a melhor solução quando você precisa isolar uma mudança específica sem trazer toda a complexidade ou instabilidade de uma branch inteira.

  • Hotfixes (Correções Urgentes): Trazer um commit de correção de bug de uma branch de feature inacabada diretamente para a branch de produção (main).
  • Movendo um Commit Acidental: Você comitou algo na branch-A que deveria ter sido comitado na branch-B. Use o cherry-pick para copiá-lo para branch-B.

⚠️ Ponto de Atenção:

O principal problema do cherry-pick é que ele duplica o commit, o que pode complicar a gestão do histórico a longo prazo. O commit original e o commit copiado terão hashes diferentes, mas as mesmas alterações. Isso pode confundir ferramentas de comparação de histórico e dificultar a mesclagem futura, pois o Git não reconhece automaticamente que um commit é a cópia do outro.


3. Git Revert

🚀 Comando: git revert

O que é: O git revert é o comando usado para desfazer as alterações introduzidas por um commit específico. Em vez de remover o commit da história (o que reescreveria o histórico, como faria o git reset), o git revert cria um novo commit chamado Reverting Commit. Este Novo Commit aplica as alterações inversas (ou opostas) do commit que você deseja desfazer. Se o commit original adicionou uma linha de código, o reverting commit irá removê-la. Se o original removeu, o reverting commit irá adicioná-la de volta. O histórico de commits é preservado, tornando o git revert a forma mais segura de desfazer alterações em branches públicas (que já foram compartilhadas com outras pessoas).

💻 Sintaxe:

git revert [hash-do-commit]

# Exemplos de parâmetros mais usados:
git revert 9a3c7f1          # Desfaz as alterações do commit com o hash específico
git revert HEAD~1           # Desfaz o commit anterior ao HEAD
git revert --no-commit      # Reverte as alterações no código, mas não cria o commit automaticamente

🎯 Quando usar: O git revert é a ferramenta padrão para desfazer alterações de forma segura em ambientes colaborativos.

  • Desfazer Commits em Branches Compartilhadas/Públicas: Use revert sempre que precisar desfazer alterações em branches como main, master ou release, pois ele não reescreve o histórico, evitando problemas para os colegas que já baixaram esse histórico.

  • Remover funcionalidades incompletas: Um commit que introduziu um recurso que não está funcionando corretamente pode ser revertido sem a necessidade de reescrever manualmente o código.

  • Correção de Erros Acidentais: Desfazer um commit que introduziu um bug sério, mantendo o registro de que ele existiu e foi corrigido.

⚠️ Ponto de Atenção: Lembre-se, o revert não remove o commit ruim; ele adiciona um novo commit que cancela o efeito do ruim. Ambos os commits permanecem no histórico.

  • Múltiplos Reverts: Se você reverter um commit e, mais tarde, tentar revertê-lo novamente, o Git pode ter dificuldade em aplicar as alterações opostas, podendo gerar um commit vazio (Empty Revert).

  • Conflitos de Reversão: Se o commit que você está revertendo alterou código que foi modificado por commits posteriores (e que já estão na sua branch), o revert pode pausar para que você resolva conflitos de merge antes de continuar ou abortar.


4. Git Squash

🚀 Comando: git squash

O que é: Git Squash é o processo de combinar vários commits em um único commit.

💻 Sintaxe:

# Opção 1: Durante um merge (junta tudo num commit só na branch atual)
git merge --squash [nome-da-branch]

# Opção 2: Durante um rebase interativo (para escolher quais commits juntar)
git rebase -i HEAD~[numero-de-commits]
# (No editor que abrir, troque 'pick' por 'squash' ou 's' nos commits desejados)

🎯 Quando usar: Quando a branch de feature tem muitos commits pequenos e irrelevantes (ex: "ajuste", "typo", "wip") e você quer juntar tudo em um único commit significativo antes de integrar. Ou quando quer reorganizar e limpar commits durante um rebase interativo para deixar a leitura do histórico mais fluida.

⚠️ Ponto de Atenção: Alterações no histórico.

  • O Squash reescreve o histórico criando um novo hash. Portanto, não faça squash em commits que já foram publicados e estão sendo usados por outras pessoas (branches compartilhadas), pois isso quebrará a sincronia do time.

5. Git Reset

🚀 Comando: git reset

O que é: Git Reset é o comando usado para desfazer mudanças, movendo o ponteiro do HEAD e, opcionalmente, alterando o estado da área de staging e do working directory. Ele serve para “voltar no tempo” dentro do histórico da sua branch.

💻 Sintaxe:

git reset [parametros]

# Principais Modos (onde N é o número de commits a voltar):
git reset --soft HEAD~N     # Desfaz o commit, mas mantém as alterações no stage
git reset --mixed HEAD~N    # (Padrão) Desfaz o commit e a stage (devolve p/ working directory)
git reset --hard HEAD~N     # PERIGO: Apaga o commit, a stage e as alterações locais

🎯 Quando usar:

  • Desfazer Commit: Quando você quer desfazer commits, mas manter as alterações no código para refazer ou descartar (uso de --soft ou --mixed).

  • Limpar Staging: Quando fez um git add . por engano e só quer tirar arquivos da área de staging.

  • Descartar Tudo: Quando quer descartar completamente alterações locais não-commitadas e voltar a um estado limpo de um commit anterior (--hard).

  • Histórico Local: Para limpar o histórico local (commits não enviados) antes de refazer commits corretamente.

⚠️ Ponto de Atenção:

  • Destrutivo (--hard): Cuidado extremo com git reset --hard: ele apaga alterações do working directory e não há como recuperá-las, a menos que você use ferramentas avançadas.

  • Histórico Compartilhado: Evite usar git reset em commits que já foram enviados (git push) para o repositório remoto — isso reescreve o histórico e exige um git push --force do seu lado, o que atrapalha outras pessoas.

  • Escopo: git reset só afeta sua branch local; a develop no servidor não será alterada.


6. Git Merge

🚀 Comando: git merge

O que é: O comando merge combina as alterações de uma branch em outro, preservando o histórico completo da versão. Ele unifica o histórico de commits de ambas as branches.

💻 Sintaxe:

git merge [nome-da-branch]

# Exemplos de parâmetros mais usados:
git merge feature/login          # Mescla a branch 'feature/login' na branch atual
git merge --no-ff feature/login  # Força a criação de um commit de merge (preserva o histórico da feature)
git merge --abort                # Cancela o processo de merge em caso de conflitos

🎯 Quando usar: Esse comando faz um merge da branch especificada para a branch em que você está no momento. Sempre que quiser unir o histórico de duas branches sem reescrever nada, ou seja, quando você quer preservar a linha do tempo real do projeto.

⚠️ Ponto de Atenção:

  • Conflitos de Arquivo: Se as mesmas linhas foram alteradas nas duas branches, o Git pausará o processo. Você deve editar o arquivo, escolher o código final, usar git add . e, por fim, git commit para finalizar o merge.

  • Alterações Pendentes: Se houver alterações cujo commit não foi realizado em sua branch atual, o Git não permitirá fazer o merge até que todas as alterações de sua branch atual sejam salvas (commitadas).


7. Git Log

🚀 Comando: git log

O que é: O git log é o comando utilizado para exibir o histórico de commits do repositório. Ele mostra informações como hash do commit, autor, data, mensagem e detalhes sobre merges e alterações, permitindo acompanhar toda a evolução do projeto.

💻 Sintaxe:

git log [parametros]

# Exemplos de parâmetros mais usados:
git log                      # Exibe o histórico completo (um commit por vez)
git log --oneline            # Mostra o histórico resumido (Hash e mensagem em uma linha)
git log --graph              # Mostra um gráfico ASCII das ramificações (branches) e merges
git log --author="Nome"      # Filtra commits por autor
git log --since="2 days ago" # Filtra por data
git log -p                   # Mostra o diff (o que mudou) em cada commit

🎯 Quando usar:

  • Revisão de Histórico: Para consultar o histórico de alterações completo do projeto, garantindo que tudo está correto antes do deploy.
  • Análise de Branches: Para analisar merges e a evolução das branches usando o parâmetro --graph.
  • Localização de Hash: Para encontrar o Hash (ID) de commits específicos que serão usados posteriormente em revert, reset ou cherry-pick.
  • Relatórios: Para filtrar commits por autor ou data, facilitando a auditoria.

⚠️ Ponto de Atenção:

Leitura em Projeto Grande: O git log pode gerar muitas linhas em projetos grandes. Utilize opções como --oneline ou filtros por autor/data (--author="Nome") para facilitar a leitura e a navegação no terminal.


8. Git Checkout

🚀 Comando: git checkout

O que é: É o comando utilizado para alternar entre branches (ramificações) ou para restaurar arquivos da árvore de trabalho. Ele atualiza os arquivos do seu diretório atual para corresponderem à versão armazenada na branch ou no commit que você selecionou.

💻 Sintaxe:

git checkout [parametro]

# Alterna para uma branch existente
git checkout develop

# Cria e troca imediatamente para uma nova branch
git checkout -b feature/nova

# Descarta alterações locais de um arquivo (restaura para o último commit)
git checkout -- nome-do-arquivo

🎯 Quando usar:

  • Navegação: Para navegar entre diferentes contextos de desenvolvimento (por exemplo, sair da branch develop e ir para uma branch de feature).

  • Criação Rápida: Para criar uma nova branch e já começar a trabalhar nela (git checkout -b).

  • Descarte Pontual: Para descartar alterações locais em um arquivo específico, revertendo-o para o estado do último commit.

⚠️ Ponto de Atenção:

  • Perda de Dados: Tenha muito cuidado ao usar git checkout [nome-do-arquivo]. Se você fizer isso, todas as alterações locais não commitadas nesse arquivo serão perdidas permanentemente, pois ele será sobrescrito pela versão do último commit.

  • Bloqueio de Troca: Se você tiver alterações não commitadas em arquivos que seriam afetados pela troca de branch, o Git pode bloquear o checkout para prevenir perda de dados.


9. Git Commit

🚀 Comando: git commit

O que é: O comando git commit cria um registro permanente das alterações que estão na staging area. Ele salva um novo ponto na linha do tempo do projeto permitindo rastrear mudanças, entender evolução e voltar atrás quando necessário.

💻 Sintaxe:

git commit -m "mensagem"

# Sintaxe mais comuns:
git commit -m "feat: [mensagem]"    # Cria commit com mensagem
git commit -am "mensagem"          # Adiciona arquivos modificados (já trackeados) e commita
git commit --amend                 # Permite editar o último commit (mensagem e/ou arquivos)

🎯 Quando usar:

  • Registro Permanente: Quando finaliza uma parte do código e deseja registrar essa alteração no histórico de forma permanente.

  • Ponto de Salvamento: Após adicionar arquivos com git add . (staging area) e antes de fazer git push para o repositório remoto.

⚠️ Ponto de Atenção:

  • Mensagens e Padrão: As mensagens do commit devem ser claras, objetivas e, crucialmente, seguir o Padrão de Nomenclatura (Conventional Commits) definido pelo time.

  • Atomicidade: Cada commit deve abordar uma única unidade lógica de trabalho (ex: "corrigir bug X"). Evite misturar correções, features e ajustes de estilo no mesmo commit.


10. Git Fetch e Git Pull

🚀 Comando: git fetch e git pull

O que é: O git fetch baixa commits, arquivos e referências de um repositório remoto para o seu local, mas não mescla nada no seu trabalho atual (é apenas uma atualização de informações). Já o git pull é a combinação de dois comandos: ele executa um git fetch para baixar os dados e, imediatamente, um git merge para atualizar sua branch atual com o conteúdo baixado.

💻 Sintaxe:

# Baixa atualizações do remoto (seguro, não altera seu código)
git fetch origin

# Baixa e tenta mesclar automaticamente na sua branch atual
git pull origin [nome-da-branch]

🎯 Quando usar:

  • Use git fetch para ver o que seus colegas fizeram (inspecionar mudanças) antes de decidir integrá-las ao seu código.

  • Use git pull sempre que começar a trabalhar (para garantir que sua develop está atualizada) ou para trazer alterações aprovadas para sua máquina.

⚠️ Ponto de Atenção:

O git pull pode gerar conflitos de merge imediatos se o seu trabalho local for incompatível com o remoto. Se estiver inseguro, prefira usar git fetch seguido de git merge manualmente.


Generated with 💜 by Grupo 04

About

Prática de GitFlow e Controle de Versão - Vem Ser 17ª Edição

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors