LogoLogo
  • Git e GitHub para Humanos
  • Sumário
  • 1. Antes de Começar
    • 1.1 Este livro é para você?
    • 1.2 A razão por trás deste livro
    • 1.3 Visão geral
    • 1.4 Sobre o GitHub
    • 1.5 Sobre a Cumbuca Dev
    • 1.6 O maravilhoso mundo do open source
    • 1.7 Mapa do livro
    • 1.8 Glossário: capítulo 1
  • 2. Fundamentos de Controle de Versão e Git
    • 2.1 Introdução a sistemas de controle de versão
      • 2.1.1 Sistemas de controle de versão centralizados
      • 2.1.2 Sistemas de controle de versão distribuídos
    • 2.2 Introdução ao Git
    • 2.3 Conceitos Fundamentais do Git
      • 2.3.1 Repositório
      • 2.3.2 Commit
      • 2.3.3 Branch
      • 2.3.4 Merge
    • 2.4 Instalando o Git
      • 2.4.1 Instalando no Linux
      • 2.4.2 Instalando no macOS
      • 2.4.3 Instalando no Windows
    • 2.5 Interagindo com o Git
    • 2.6 O Comando Git
    • 2.7 Inicializando de um Repositório Local
    • 2.8 Configurando de um Repositório Local
    • 2.9 Links Úteis: Capítulo 2
    • 2.10 Glossário: Capítulo 2
  • 3. Operações Locais Básicas no Git
    • 3.1 Explorando Operações Locais do Git
    • 3.2 Salvando Alterações Localmente
      • 3.2.1 Adicionando Arquivos ao Controle de Versão via `git add`
      • 3.2.2 Verificando o Estado do Repositório via `git status`
      • 3.2.3 Criando Commits via `git commit`
      • 3.2.4 Visualizando o Histórico do Repositório via `git log`
      • 3.2.5 Comparando Alterações via `git diff`
      • 3.2.6 Unindo os Pontos
      • 3.2.7 Exemplo Prático
    • 3.3 Trabalhando com Branches Localmente
      • 3.3.1 Gerenciando Branches via `git branch`
      • 3.3.2 Alternando Entre Branches via `git switch`
      • 3.3.3 Mesclando Branches via `git merge`
        • 3.3.3.1 Resolvendo Conflitos de Merge
      • 3.3.4 Unindo os Pontos
      • 3.3.5 Exemplo Prático
    • 3.4 Links Úteis: Capítulo 3
    • 3.5 Glossário: Capítulo 3
  • 4. Ajuste de Mudanças Locais no Git
    • 4.1 Desfazendo Alterações Localmente
      • 4.1.1 Desfazendo Alterações Antes do Commit
      • 4.1.2 Desfazendo Commits
      • 4.1.3 Alterando o Último Commit via `git commit --amend`
      • 4.1.4 Unindo os Pontos
      • 4.1.5 Exemplos Práticos
    • 4.2 Ignorando e Removendo Arquivos do Rastreamento Local
      • 4.2.1 Ignorando Arquivos do Rastreamento Utilizando o arquivo .gitignore
      • 4.2.2 Removendo Arquivos do Rastreamento via `git rm`
    • 4.3 Links Úteis: Capítulo 4
    • 4.4 Glossário: Capítulo 4
  • 5. Introdução ao GitHub
    • 5.1 Qual a diferença entre Git e GitHub?
    • 5.2 Grandes Projetos Abertos no GitHub
    • 5.3 Recursos do GitHub
    • 5.4 Idioma Suportado no GitHub
    • 5.5 Contas no GitHub
      • 5.5.1 Conta Pessoal
      • 5.5.2 Conta de Organização
      • 5.5.3 Conta Corporativa
      • 5.5.4 Unindo os Pontos
    • 5.6 Planos do GitHub
    • 5.7 Criando uma Conta Pessoal no GitHub
    • 5.8 Explorando a Interface do GitHub
      • 5.8.1 Página Principal (Home)
      • 5.8.2 Página de Notificações (Notifications)
      • 5.8.3 Página de Configurações (Settings)
    • 5.9 Links Úteis: Capítulo 5
    • 5.10 Glossário: Capítulo 5
  • 6. Repositórios no GitHub
    • 6.1 O quê é um Repositório no GitHub?
    • 6.2 Criando um Repositório no GitHub
    • 6.3 Página Principal de um Repositório: Aba Code
      • 6.3.1 Editando um Arquivo em um Repositório no GitHub
      • 6.3.2 Explorando o Histórico de Commits de um Repositório no GitHub
      • 6.3.3 Editando Detalhes de um Repositório no GitHub
      • 6.3.4 Explorando um Repositório Ativo em Uso
    • 6.4 Página de Configurações de um Repositório: Aba Settings
      • 6.4.1 Gerenciando Configurações Gerais de um Repositório no GitHub: Menu General
      • 6.4.2 Gerenciando Configurações de Colaboração de um Repositório no GitHub: Menu Collaborators
      • 6.4.3 Explorando Configurações de um Repositório no GitHub na Prática
    • 6.5 Links Úteis: Capítulo 6
    • 6.6 Glossário: Capítulo 6
  • 7. Documentação de Projetos
    • 7.1 O quê é Documentação de Projeto?
    • 7.2 Explorando a Linguagem de Marcação Markdown
    • 7.3 Criando uma Página de Apresentação no GitHub
    • 7.4 Links Úteis: Capítulo 7
    • 7.5 Glossário: Capítulo 7
  • 8. Issues no GitHub
    • 8.1 O quê é GitHub Issues?
    • 8.2 Criando uma Issue no GitHub
    • 8.3 Explorando a Página de uma Issue no GitHub
    • 8.4 Atribuindo uma Issue no GitHub
    • 8.5 Categorizando Issues de um Repositório através de Labels no GitHub
      • 8.5.1 Gerenciando Labels de um Repositório no GitHub
    • 8.6 Página de Issues de um Repositório no GitHub: Aba Issues
    • 8.7 Explorando Issues no Mundo Real
    • 8.8 Links Úteis: Capítulo 8
    • 8.9 Glossário: Capítulo 8
  • 9. Git Remoto
    • 9.1 Explorando Operações Remotas do Git
    • 9.2 Interagindo com o Repositório Remoto Central no Git
      • 9.2.1 Clonando um Repositório Remoto via `git clone`
      • 9.2.2 Buscar Atualizações de um Repositório Remoto via `git fetch`
      • 9.2.3 Enviando Mudanças Locais para o Repositório Remoto via `git push`
      • 9.2.4 Sincronizando o Repositório Local com o Remoto via `git pull`
      • 9.2.5 Unindo os Pontos
      • 9.2.6 Exemplo
    • 9.3 Interagindo com o Repositório Remoto hello-world
      • 9.3.1 Conectando-se ao GitHub via SSH
      • 9.3.2 Clonando o Repositório hello-world
      • 9.3.3 Alterando hello-world Localmente
        • 9.3.3.1 Editor de Código
        • 9.3.3.2 Editando README.md
        • 9.3.3.3 Salvando Alterações no Controle de Versão Local
      • 9.3.4 Enviando Alterações para o Repositório Remoto
    • 9.4 Links Úteis: Capítulo 9
    • 9.5 Glossário: Capítulo 9
  • 10. Pull Requests no GitHub
    • 10.1 O quê é um Pull Requests no GitHub?
    • 10.2 Entendendo as Propriedades de um Pull Request no GitHub
      • 10.2.1 Branches de Origem e de Destino de um Pull Request
      • 10.2.2 Título de um Pull Request
      • 10.2.3 Descrição de um Pull Request
      • 10.2.4 Modificações de um Pull Request
      • 10.2.5 Pessoas Revisoras de um Pull Request
      • 10.2.6 Labels de um Pull Request
    • 10.3 Criando um Pull Request no GitHub
    • 10.4 Página de um Pull Request no GitHub
      • 10.4.1 Aba Conversation
      • 10.4.2 Aba Commits
      • 10.4.3 Aba Checks
      • 10.4.4 Aba Files Changed
    • 10.5 Página de Pull Requests de um Repositório no GitHub: Aba Pull Requests
    • 10.6 Recebendo Revisões em um Pull Request no GitHub
      • 10.6.1 Boas Práticas
      • 10.6.2 Exemplo Prático
        • 10.6.2.1 Adicionando Conta Colaboradora
        • 10.6.2.2 Solicitando Revisão de Pull Request
        • 10.6.2.3 Lidando com o Feedback
    • 10.7 Mesclando um Pull Request no GitHub
      • 10.7.1 Exemplo Prático
    • 10.8 Atualizando um Repositório Local Após Mesclagem
    • 10.9 Explorando Pull Requests no Mundo Real
    • 10.10 Links Úteis: Capítulo 10
    • 10.11 Glossário: Capítulo 10
  • 11. Fluxo de Trabalho
    • 11.1 Fork no GitHub
      • Fork
    • 11.2 Forks e Pull Requests
      • 11.2.1 Criando um Fork no GitHub
      • 11.2.2 Clonando um Fork
      • 11.2.3 Realizando Alterações Localmente
      • 11.2.4 Enviando Alterações Locais para o Fork Remoto
      • 11.2.5 Criando um Pull Request a partir de um Fork no GitHub
      • 11.2.6 Sincronizando um Fork no GitHub
      • 11.2.7 Revisão, Mesclagem e Atualizações Pós-mesclagem
    • 11.3 Fluxo de Trabalho
  • 11.4 Links Úteis - Capítulo 11
  • 11.5 Glossário - Capítulo 11
  • 12. O Caminho Continua
    • 12.1 Conhecendo Ferramentas Adicionais
      • 12.1.1 Indicação: Jogo Oh My Git
    • 12.2 Explorando Projetos Open Source
    • 12.3 Crescendo e Colaborando em Comunidades
    • 12.4 Desafio: GitCaos 🔥
    • 12.5 Links Úteis - Capítulo 12
    • 12.6 Glossário Completo: Git e GitHub para Humanos
Fornecido por GitBook
Nesta página
  • Antes do Commit
  • Exemplo 1. Desfazer Alterações Não Adicionadas à Área de Staging
  • Exemplo 2. Remover Arquivos da Área de Staging
  • Desfazendo Commits
  • Exemplo 3. Reverter um Commit Específico
  • Exemplo 4. Desfazendo os Dois Últimos Commits
  • Alterando o Último Commit
  • Exemplo 5. Modificar o Último Commit

Isto foi útil?

Editar no GitHub
Exportar como PDF
  1. 4. Ajuste de Mudanças Locais no Git
  2. 4.1 Desfazendo Alterações Localmente

4.1.5 Exemplos Práticos

  • Antes do Commit

    • Exemplo 1. Desfazer Alterações Não Adicionadas à Área de Staging

    • Exemplo 2. Remover Arquivos da Área de Staging

  • Desfazendo Commits

    • Exemplo 3. Reverter um Commit Específico

    • Exemplo 4. Desfazendo os Dois Últimos Commits

  • Alterando o Último Commit

    • Exemplo 5. Modificar o Último Commit

Antes do Commit

Exemplo 1. Desfazer Alterações Não Adicionadas à Área de Staging

Passo 1: Criar ou modificar um arquivo

🔹 Linux/macOS

echo "Alteração" > arquivo.txt

🔹 Windows (CMD/PowerShell)

echo Alteração > arquivo.txt

Passo 2: Verificar o estado atual do repositório

Verifique os arquivos modificados que ainda não foram adicionados à área de staging.

git status

Saída esperada:

Modifications not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
  modified:   arquivo.txt

Passo 3: Desfazer as alterações no arquivo

Para restaurar o arquivo para seu estado original, utilize o comando:

git restore arquivo.txt

Passo 4: Verificar novamente o estado do repositório

Após desfazer as alterações, verifique novamente o estado do repositório.

git status

Saída esperada:

Nothing to commit, working tree clean

Exemplo 2. Remover Arquivos da Área de Staging

Passo 1: Criar ou modificar um arquivo

🔹 Linux/macOS

echo "Alteração" > arquivo.txt

🔹 Windows (CMD/PowerShell)

echo Alteração > arquivo.txt

Passo 2: Adicionar o arquivo à área de staging

Adicione o arquivo à área de staging para prepará-lo para o commit.

git add arquivo.txt

Passo 3: Verificar o estado da área de staging

Verifique os arquivos que foram adicionados à área de staging.

git status

Saída esperada:

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
  new file:   arquivo.txt

Passo 4: Remover o arquivo da área de staging

Remova o arquivo da área de staging, mas sem apagar o arquivo do seu diretório de trabalho.

git reset HEAD arquivo.txt

Passo 5: Verificar novamente o estado da área de staging

Após remover o arquivo da área de staging, verifique o estado novamente.

git status

Saída esperada:

Modifications not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
  modified:   arquivo.txt

Desfazendo Commits

Exemplo 3. Reverter um Commit Específico

Passo 1: Criar um repositório de exemplo (se ainda não tiver um)

git init meu-repo
cd meu-repo

Passo 2: Fazer o commit de um arquivo novo

🔹 Linux/macOS

echo "Primeira versão" > arquivo.txt
git add arquivo.txt
git commit -m "Adicionando arquivo inicial"

🔹 Windows (CMD/PowerShell)

echo Primeira versão > arquivo.txt
git add arquivo.txt
git commit -m "Adicionando arquivo inicial"

Passo 3: Fazer mais três commits adicionando linhas ao mesmo arquivo

Adicione mais uma linha ao arquivo e faça o commit. Faça isso um total de três vez.

🔹 Linux/macOS

echo "Alteração 1" >> arquivo.txt
git add arquivo.txt
git commit -m "Alteração 1 no arquivo"

echo "Alteração 2" >> arquivo.txt
git add arquivo.txt
git commit -m "Alteração 2 no arquivo"

echo "Alteração 3" >> arquivo.txt
git add arquivo.txt
git commit -m "Alteração 3 no arquivo"

🔹 Windows (CMD/PowerShell)

echo Alteração 1 >> arquivo.txt
git add arquivo.txt
git commit -m "Alteração 1 no arquivo"

echo Alteração 2 >> arquivo.txt
git add arquivo.txt
git commit -m "Alteração 2 no arquivo"

echo Alteração 3 >> arquivo.txt
git add arquivo.txt
git commit -m "Alteração 3 no arquivo"

Passo 4: Listar o histórico de commits

git log --oneline

Saída esperada:

a1b2c3 Alteração 3 no arquivo
d4e5f6 Alteração 2 no arquivo
g7h8i9 Alteração 1 no arquivo
j0k1l2 Adicionando arquivo inicial

Passo 5: Reverter um commit específico

Suponha que queremos desfazer "Alteração 2 no arquivo". Pegue o hash correspondente e execute o comando:

git revert d4e5f6

O Git abrirá um editor para confirmar a mensagem do commit de reversão. Salve e saia do editor.

Passo 6: Verificar o status do repositório

git status

Saída esperada:

No changes to commit, working tree clean

Passo 7: Verificar o histórico novamente

git log --oneline

Saída esperada:

x1y2z3 Revert "Alteração 2 no arquivo"
a1b2c3 Alteração 3 no arquivo
d4e5f6 Alteração 2 no arquivo
g7h8i9 Alteração 1 no arquivo
j0k1l2 Adicionando arquivo inicial

Passo 8: Verificar o conteúdo do arquivo

🔹 Linux/macOS

cat arquivo.txt

🔹 Windows (CMD/PowerShell)

type arquivo.txt

Saída esperada:

Primeira versão
Alteração 1
Alteração 3

Exemplo 4. Desfazendo os Dois Últimos Commits

Passo 1: Criar um repositório e entrar nele

git init outro-repo
cd outro-repo

Passo 2: Fazer o commit de um arquivo novo

🔹 Linux/macOS

echo "Versão inicial" > documento.txt
git add documento.txt
git commit -m "Versão inicial do documento"

🔹 Windows (CMD/PowerShell)

echo Versão inicial > documento.txt
git add documento.txt
git commit -m "Versão inicial do documento"

Passo 3: Fazer mais três commits adicionando linhas ao mesmo arquivo

Adicione mais uma linha ao arquivo e faça o commit. Faça isso um total de três vez.

🔹 Linux/macOS

echo "Mudança 1" >> documento.txt
git add documento.txt
git commit -m "Mudança 1 no documento"

echo "Mudança 2" >> documento.txt
git add documento.txt
git commit -m "Mudança 2 no documento"

echo "Mudança 3" >> documento.txt
git add documento.txt
git commit -m "Mudança 3 no arquivo"

🔹 Windows (CMD/PowerShell)

echo Mudança 1 >> documento.txt
git add documento.txt
git commit -m "Mudança 1 no documento"

echo Mudança 2 >> documento.txt
git add documento.txt
git commit -m "Mudança 2 no documento"

echo Mudança 3 >> documento.txt
git add documento.txt
git commit -m "Mudança 3 no documento"

Passo 4: Listar os commits

git log --oneline

Saída esperada:

z9y8x7 Mudança 3 no documento
w6v5u4 Mudança 2 no documento
t3s2r1 Mudança 1 no documento
q0p9o8 Versão inicial do documento

Passo 4: Desfazer os últimos 2 commits, mantendo as alterações

git reset --soft HEAD~2

Agora, as alterações feitas nesses commits ainda estão na área de staging, prontas para serem ajustadas.

Passo 5: Verificar o status do repositório

git status

Saída esperada:

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   documento.txt

Passo 6: Verificar novamente o histórico

git log --oneline

Saída esperada:

t3s2r1 Mudança 1 no documento
q0p9o8 Versão inicial do documento

Agora os commits desfeitos não estarão mais no histórico.

Passo 7: Verificar o conteúdo do arquivo

🔹 Linux/macOS

cat documento.txt

🔹 Windows (CMD/PowerShell)

type documento.txt

Saída esperada:

Versão inicial
Mudança 1
Mudança 2
Mudança 3

A saída mostra que as linhas referentes às mudanças 2 e 3 ainda estão no arquivo, mesmo que os commits tenham sido desfeitos no Passo 4 com git reset --soft HEAD~2. Isso acontece porque o reset foi feito com a opção --soft, que remove os commits, mas mantém as alterações no arquivo e na área de staging.

Passo 8: Verificar o git diff do staged

git diff --staged

Saída esperada:

--- a/documento.txt
+++ b/documento.txt
@@ -1,2 +1,4 @@
 Versão inicial
 Mudança 1
+Mudança 2
+Mudança 3
(END)

O git diff --staged mostra as mudanças que estão na área de staging, ou seja, prontas para serem commitadas novamente.

A saída mostra que as linhas "Mudança 2" e "Mudança 3" foram adicionadas (+ indica adição). Isso confirma que, apesar de os commits terem sido removidos do histórico, as alterações continuam armazenadas e podem ser reaproveitadas em um novo commit, editadas ou descartadas conforme necessário.

Resumindo, os commits foram apagados, mas as mudanças feitas neles continuam disponíveis para serem reutilizadas.

Alterando o Último Commit

Exemplo 5. Modificar o Último Commit

Passo 1: Criar um repositório e entrar nele

git init mais-um-repo
cd mais-um-repo

Passo 2: Fazer o commit de um arquivo novo

🔹 Linux/macOS

echo "Meu texto maneiro" > texto.txt
git add texto.txt
git commit -m "Adicionando texto.txt"

🔹 Windows (CMD/PowerShell)

echo Meu texto maneiro > texto.txt
git add texto.txt
git commit -m "Adicionando texto.txt"

Passo 3: Verificar o histórico de commits

git log
commit 4adbb23d9c7cbdc548e0cf87fd3385c4c3b83f86 (HEAD -> main)
Author: Cumbuca Dev <cumbucadev@gmail.com>
Date:   Fri Feb 21 09:29:00 2025 -0300

    Adicionando texto.txt

Passo 4: Criar outro arquivo e esquecê-lo no commit

Agora, criamos outro arquivo, mas esquecemos de adicioná-lo no commit anterior.

🔹 Linux/macOS

echo "Conteúdo importante" > esquecido.txt

🔹 Windows (CMD/PowerShell)

echo Conteúdo importante > esquecido.txt

Passo 4: Adicionar o novo arquivo e modificar o último commit

Agora, adicionamos o novo arquivo e modificamos o último commit para incluí-lo.

git add esquecido.txt
git commit --amend -m "Adicionando texto.txt e arquivo esquecido"

Saída esperada (algo como):

[main 15b10cf] Adicionando texto.txt e arquivo esquecido
 Date: Fri Feb 21 09:29:00 2025 -0300
 2 files changed, 2 insertions(+)
 create mode 100644 esquecido.txt
 create mode 100644 texto.txt

Passo 5: Verificar o histórico de commits

Para confirmar que a mensagem foi alterada e o novo arquivo foi incluído no commit, execute:

git log

Saída esperada (algo como):

commit 15b10cf054dbe24a8fc00422d82304b2528b3acb (HEAD -> main)
Author: Cumbuca Dev <cumbucadev@gmail.com>
Date:   Fri Feb 21 09:29:00 2025 -0300

    Adicionando texto.txt e arquivo esquecido

Passo 6: Verificar os arquivos no commit

Podemos verificar quais arquivos estão incluídos no commit alterado com o seguinte comando:

git show --name-only

Saída esperada:

ccommit 15b10cf054dbe24a8fc00422d82304b2528b3acb (HEAD -> main)
Author: Cumbuca Dev <cumbucadev@gmail.com>
Date:   Fri Feb 21 09:29:00 2025 -0300

    Adicionando texto.txt e arquivo esquecido

esquecido.txt
texto.txt

Agora o commit foi modificado para incluir o arquivo esquecido e tem uma mensagem atualizada.

Anterior4.1.4 Unindo os PontosPróximo4.2 Ignorando e Removendo Arquivos do Rastreamento Local

Atualizado há 3 meses

Isto foi útil?