Skip to content

Comandos Explicados no Detalhe

Vinícius Stutz edited this page Sep 30, 2026 · 1 revision

Explicação aprofundada dos principais comandos do Git, com contexto de uso, flags importantes e exemplos práticos.

Dica Pedagógica

Pense no Git como um videogame: o add é preparar o inventário, o commit é o Save Point e o push é carregar o seu progresso para o servidor na nuvem.

Configuração Inicial

Veja o básico aqui, no artigo inicial desta wiki.

Para repositórios com caminhos de arquivo muito longos (comum no Windows):

git config --system core.longpaths true

Gestão de Branches e Navegação

Branches (ramificações) permitem trabalhar em funcionalidades isoladas sem afetar o código principal.

Mudar para uma branch remota

git checkout remotes/origin/branch-name

Muda para uma branch que existe apenas no servidor. Importante: você entra em um estado chamado "detached HEAD", ou seja, está visualizando o código, mas não pode gravar alterações diretamente ali.

Mudar para uma branch local

git checkout develop

Muda para a branch local chamada develop. É como trocar de "pasta de trabalho" para outra versão do projeto.

Criar e mudar para uma nova branch

git checkout -b feature/xxx

Atalho que cria uma nova branch chamada feature/xxx e muda imediatamente para ela.

Excluir uma branch local

git branch -d feature/xxx

Apaga a branch feature/xxx localmente. Só funciona se as alterações já tiverem sido mescladas em outro lugar - isso protege contra perda de dados.

Sincronização - Buscando Dados do Servidor

Esses comandos trazem novidades do servidor para o seu computador local.

Fetch sem mesclar (busca informações)

git fetch -v --progress origin

Baixa as novidades do servidor (origin) sem misturá-las com o código atual. O flag -v (verbose) mostra detalhes e --progress exibe a barra de progresso.

git fetch --all

Igual ao anterior, mas busca atualizações de todos os repositórios remotos configurados, não apenas do principal.

Pull (busca + mescla automaticamente)

git pull -v --progress --no-rebase origin

Faz o download e mescla (merge) o código do servidor na sua branch atual. O flag --no-rebase garante que o Git use o método padrão de mesclagem.

git pull --all

Tenta atualizar todas as suas branches locais com as informações de todos os remotos.

Gravando e Enviando Alterações

Aqui é onde você registra o seu progresso e o compartilha com a equipe.

Preparar arquivos (staging area)

git add *

Prepara todos os arquivos modificados para serem gravados (adiciona-os à staging area). Prefira git add . para incluir também arquivos ocultos.

Gravar as alterações localmente (commit)

git commit -m "comentários"

Grava permanentemente as alterações preparadas com uma mensagem descritiva. É a "foto" do seu código naquele momento - ela ficará no histórico para sempre.

Enviar para o servidor (push)

git push origin

Envia suas branches locais para o servidor padrão (origin).

git push --progress origin branch

Envia uma branch específica para o servidor, exibindo a barra de progresso do upload.

Desfazendo Alterações

Revert - desfazer de forma segura

git revert <número-do-hash>

Cria um novo commit que desfaz as mudanças de um commit anterior. É a forma segura de reverter, pois não apaga o histórico.

Note

O número do hash do commit pode ser obtido com git log ou git log --oneline.

Reset - desfazer permanentemente

git reset --hard HEAD~1

Warning

Cuidado! Apaga todas as alterações locais que ainda não foram enviadas e volta o código exatamente para o estado do último commit. Essa ação não pode ser desfeita.

.gitignore

O arquivo .gitignore instrui o Git a ignorar arquivos e diretórios específicos - eles não serão rastreados nem aparecerão no git status.

Crie o arquivo sempre na raiz do repositório.

Veja o básico aqui, no artigo inicial desta wiki.

Tags

Tags marcam pontos específicos no histórico - normalmente usadas para sinalizar versões de release.

git tag                              # Lista todas as tags existentes
git tag v1.0.0                       # Cria uma tag leve no commit atual
git tag -a v1.0.0 -m "Release 1.0"  # Cria uma tag anotada com mensagem
git push origin v1.0.0              # Envia uma tag específica para o remoto
git push origin --tags              # Envia todas as tags locais para o remoto

Tags leves são apenas um ponteiro para um commit. Tags anotadas armazenam metadados completos (autor, data, mensagem) e são a escolha recomendada para releases públicas.

Stash - Salvando Trabalho Temporariamente

O stash é uma "pilha" de alterações incompletas que você quer salvar sem fazer commit.

git stash                     # Guarda alterações não commitadas na pilha
git stash push -m "WIP: login"  # Guarda com uma mensagem descritiva
git stash list                # Lista todos os stashes salvos
git stash pop                 # Restaura o mais recente e o remove da lista
git stash apply stash@{1}     # Restaura um stash específico (sem remover)
git stash drop stash@{0}      # Remove um stash específico da lista
git stash clear               # Remove todos os stashes salvos

Note

Use stash ao precisar trocar de branch rapidamente sem perder alterações em andamento. Lembre-se de dar pop antes de fechar o projeto.

Correções e Configurações

Para quando algo não sai como planejado ou o servidor muda.

Cancelar um merge em conflito

git merge --abort

Se você tentou mesclar duas branches e houve conflito (código sobreposto), esse comando cancela tudo e volta ao estado anterior ao merge.

Atualizar a URL do repositório remoto

git remote set-url origin new.git.url/here

Informa ao Git que o endereço do servidor (onde o código é armazenado online) mudou para um novo link.

Exemplo de Fluxo de Trabalho

Um cenário típico de desenvolvimento de uma nova funcionalidade:

1. git checkout -b feature/login     → Cria a branch para a tarefa
2. (escreva o código...)
3. git add *                         → Prepara os arquivos modificados
4. git commit -m "Adiciona formulário de login"  → Salva localmente
5. git push origin feature/login     → Envia para o servidor
6. (abrir Pull Request na interface do GitHub/GitLab)
7. git branch -d feature/login       → Remove a branch local após merge

Note

A ação recomendada é sempre realizar o merge por meio de um Pull Request (ou Merge Request) dentro da ferramenta de versionamento, e não diretamente pelo terminal. Isso garante revisão de código e rastreabilidade.