Git Tutorial - soberaniadigital/soberaniadigital GitHub Wiki
Esta é uma documentação introdutória sobre os comandos e conceitos básicos do Git, um sistema de controle de versão distribuído.
Gerar um cópia local do repositório para começar a trabalhar.
-
Ferramenta:
git clone -
Exemplo de Uso:
# 1. Clona o repositório remoto para uma pasta local. git clone [https://github.com/usuario/meu-projeto.git](https://github.com/usuario/meu-projeto.git) cd meu-projeto
- Progressão: Este é o ponto de partida. Agora tem o código e todo o seu histórico.
Você não deve trabalhar diretamente na branch main. Crie sua própria "ramificação" para a funcionalidade de login.
-
Ferramentas:
git checkout -b,git add,git commit -
Exemplo de Uso:
# 1. Cria UMA NOVA branch chamada 'feature-login' e MUDA para ela. git checkout -b feature-login # 2. Agora cria os arquivos (ex: login.html, login.css)... # 3. Adiciona os novos arquivos à "área de preparo" (Staging). git diff git add <arquivo> (Colocar cada arquivo modificado) # 4. Salva um "snapshot" (um commit) do seu trabalho no histórico local. git commit -m "Adiciona estrutura inicial da página de login"
-
Progressão: Usou
checkout -bpara se isolar damain. Ela trabalhou e usouaddecommitpara salvar seu progresso localmente em sua branch.
Enquanto trabalhava, outro desenvolvedor atualizou a branch main com uma correção de bug. Você precisa trazer essa correção para sua branch antes de continuar.
-
Ferramentas:
git checkout,git pull,git rebase(ougit merge) -
Exemplo de Uso:
# 1. Volta para a branch principal. git checkout main # 2. Baixa e mescla as atualizações do servidor (o commit de Bruno). git pull origin main # 3. Volta para sua branch de trabalho. git checkout feature-login # 4. Reaplica seus commits (o "login inicial") SOBRE a 'main' atualizada. # Isso mantém o histórico linear e limpo. git rebase main # (Alternativa: 'git merge main' faria a mesma coisa, # mas criando um "commit de merge" extra).
-
Progressão: Você usou
pullpara obter atualizações externas erebasepara colocar seu trabalho "em dia" com a branch principal, resolvendo possíveis conflitos antes de enviar seu código.
Você terminou a funcionalidade de login e quer que ela seja integrada ao projeto principal.
-
Ferramenta:
git push -
Exemplo de Uso:
# Envia sua branch 'feature-login' para o repositório remoto (origin). git push origin feature-login -
Progressão: O comando
pushtorna sua branch local visível para outros no servidor. Agora ela pode abrir um Pull Request (como descrito no seu fluxo de trabalho no Bloco 1), pedindo para mesclarfeature-loginnamain.
Antes de dar push, Você percebe que seu último commit está completamente errado e quer apagá-lo (e às suas alterações).
-
Ferramenta:
git reset -
Exemplo de Uso:
# 1. Você ainda está na 'feature-login' e não deu 'push'. # 2. Desfaz o último commit E descarta todas as alterações # nos arquivos que ele continha (cuidado: ação destrutiva). git reset --hard HEAD~1
-
Progressão:
reseté usado para corrigir erros locais antes que eles sejam compartilhados com a equipe.
A funcionalidade de login (commit 0a1b2c3d) foi mesclada na main, mas descobriu-se que você quebrou o layout. O histórico não pode ser reescrito (com reset) porque já é público.
-
Ferramenta:
git revert -
Exemplo de Uso:
# 1. Garante que está na 'main' e atualizado. git checkout main git pull origin main # 2. CRIA UM NOVO COMMIT que é o oposto exato do commit que causou o bug. git revert 0a1b2c3d # 3. Envia o commit de reversão para o servidor, corrigindo o bug. git push origin main
-
Progressão:
reverté a maneira segura de desfazer alterações em um histórico público, pois ele adiciona um novo commit (a reversão) em vez de apagar o commit antigo.
O seu trabalho foi concluído e mesclado. A feature-login não é mais necessária.
-
Ferramenta:
git branch -d -
Exemplo de Uso:
# 1. Volta para a 'main'. git checkout main # 2. Apaga a branch local 'feature-login'. git branch -d feature-login
- Progressão: Este comando finaliza o ciclo de vida da feature, mantendo o repositório local limpo.
-
Comando:
git clone URL - Descrição: Cria uma cópia local de um repositório remoto para começar a trabalhar.
-
Exemplo de uso:
git clone https://github.com/usuario/meu-projeto.git
-
Comando:
git add . - Descrição: Inclui arquivos que sofreram alteração na área de staging para serem posteriormente commitados.
-
Exemplo de uso:
git add .(Adiciona todos os arquivos modificados) ougit add index.html(Adiciona um arquivo específico).
-
Comando:
git commit -m "mensagem" - Descrição: Confirma as alterações realizadas, registrando-as no histórico local com uma mensagem explicativa.
-
Exemplo de uso:
git commit -m "Corrige bug na página de login"
-
Comando:
git branch <nome_da_branch>(para criar) - Descrição: Administra ramificações (branches) para organizar diferentes linhas de desenvolvimento.
-
Exemplo de uso:
git branch feature-pagamento(Cria a nova branch) ougit branch -d feature-pagamento(Deleta a branch).
-
Comando:
git checkout <nome_da_branch> -
Descrição: Alterna entre branches existentes. Use
git checkout -b <novo_nome>para criar e já alternar para uma nova branch. -
Exemplo de uso:
git checkout feature-pagamento(Muda para a branch) ougit checkout -b feature-nova(Cria e muda para a "feature-nova").
-
Comando:
git merge <branch> -
Descrição: Combina o histórico de múltiplas branches (ex: traz as alterações da
<branch>para a branch atual), criando um commit de merge. -
Exemplo de uso: Estando na branch
main, executegit merge feature-pagamentopara trazer as mudanças da "feature-pagamento" para a "main".
-
Comando:
git pull origin <branch> - Descrição: Sincroniza atualizações do repositório remoto (baixando-as) com o seu repositório local (mesclando-as).
-
Exemplo de uso:
git pull origin main(Atualiza sua branch "main" local com a versão do servidor remoto "origin").
-
Comando:
git push origin <branch> - Descrição: Envia as alterações (commits) locais para atualizar o repositório remoto.
-
Exemplo de uso:
git push origin feature-pagamento(Envia sua "feature-pagamento" local para o repositório remoto).
-
Comando:
git reset <commit_hash> -
Descrição: Reverte o histórico para um commit anterior, desfazendo modificações posteriores (cuidado ao usar
--hard). -
Exemplo de uso:
git reset --hard HEAD~1(Remove permanentemente o último commit e suas alterações do seu repositório local).
-
Comando:
git revert <commit_hash> - Descrição: Cria um novo commit que reverte as alterações do commit escolhido, mantendo o restante do histórico intacto.
-
Exemplo de uso:
git revert 0a1b2c3d(Cria um novo commit que desfaz o que foi feito no commit "0a1b2c3d").
Combina ramificações mantendo o histórico original. Ele cria commits de merge explícitos para unir as linhas de desenvolvimento. O histórico pode ficar mais complexo visualmente, mas preserva o contexto exato de quando as ramificações foram unidas.
-
Exemplo de cenário: Você está na
maine quer integrar o trabalho dafeature-login. Você usagit merge feature-login. Isso cria um novo "commit de merge" (ex: "Merge branch 'feature-login' into 'main'"), unindo os históricos.
Reaplica os commits de uma branch sobre outra. Ele "move" a branch para o topo da branch base, criando um histórico linear e mais limpo. Este processo reescreve o histórico (altera os hashes dos commits), por isso deve ser usado com cautela em branches compartilhados.
-
Exemplo de cenário: Você está na
feature-logine amainfoi atualizada por outros desenvolvedores. Você usagit rebase main(enquanto está na "feature-login"). O Git "move" seus commits da "feature-login" para o topo damainatualizada, deixando o histórico linear, como se você tivesse começado seu trabalho a partir damainmais recente.