9.2.6 Exemplo

Clonar um Repositório

Um repositório hipotético é clonado com o comando git clone.

git clone https://github.com/exemplo/repo.git
 Cloning into 'repo'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 10 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (10/10), done.

Este comando cria uma cópia local do repositório remoto. As mensagens indicam o progresso do clone, incluindo a contagem e compressão de objetos.

Entrar na Pasta do Projeto

Entra-se na pasta do projeto.

cd repo

Verificar o Status

Utiliza-se git status para ver o estado atual do diretório de trabalho e da área de stage.

git status
 On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

Mostra-se que o repositório local está atualizado com o repositório remoto, e que não há mudanças a serem comitadas.

Ver Histórico de Commits com git log

Utiliza-se git log para ver o histórico de commits.

git log
▶ commit 0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> main, origin/main)
Author: Outro Desenvolvedor <[email protected]>
Date:   Wed Jun 13 11:00:00 2024 -0300

    Commit anterior feito por outra pessoa

Exibe-se o histórico de commits, mostrando detalhes como o autor, data, e a mensagem do commit.

Modificar um Arquivo

Modifica-se um arquivo hipotético chamado arquivo.txt.

echo Nova linha de conteúdo >> arquivo.txt

Este comando adiciona uma nova linha ao arquivo arquivo.txt.

Verificar Diferenças

Utiliza-se git diff para verificar as diferenças.

git diff
▶ diff --git a/arquivo.txt b/arquivo.txt
index e69de29..d95f3ad 100644
--- a/arquivo.txt
+++ b/arquivo.txt
@@ -0,0 +1 @@
+Nova linha de conteúdo

Mostra-se as diferenças entre o estado atual do arquivo e o último commit. Indica que arquivo.txt teve uma linha adicionada.

Verificar o Status

Utiliza-se git status para ver o estado atual do diretório de trabalho e da área de stage.

git status
▶ On branch main
Your branch is up to date with 'origin/main'.

Changes 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

no changes added to commit (use "git add" and/or "git commit -a")

Indica-se que arquivo.txt foi modificado, mas ainda não foi adicionado à área de stage.

Adicionar o Arquivo

Utiliza-se git add arquivo.txt para adicionar o arquivo ao stage.

git add arquivo.txt

Adiciona-se arquivo.txt à área de stage, preparando-o para o commit.

Verificar o Status

Utiliza-se git status para ver o estado atual do diretório de trabalho e da área de stage.

git status
▶ On branch main
Your branch is up to date with 'origin/main'.

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

Mostra-se que arquivo.txt está preparado para ser commitado.

Fazer Commit

Utiliza-se git commit -m "Adiciona nova linha em arquivo.txt" para salvar as mudanças.

git commit -m "Adiciona nova linha em arquivo.txt"
▶ [main 1a2b3c4] Adiciona nova linha em arquivo.txt
 1 file changed, 1 insertion(+)

Cria-se um novo commit com a mensagem descritiva "Adiciona nova linha em arquivo.txt", indicando que 1 arquivo foi alterado com 1 inserção.

Verificar o Status

Utiliza-se git status para verificar o estado após o commit.

git status
▶ On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

Indica-se que o repositório local está 1 commit à frente do repositório remoto, e não há mudanças no diretório de trabalho.

Ver Histórico de Commits com git log

Utiliza-se git log para ver o histórico de commits.

git log
▶ commit 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s (HEAD -> main)
Author: Seu Nome <[email protected]>
Date:   Wed Jun 13 12:34:56 2024 -0300

    Alterando arquivo.txt

commit 0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (origin/main)
Author: Outro Desenvolvedor <[email protected]>
Date:   Wed Jun 13 11:00:00 2024 -0300

    Commit anterior feito por outra pessoa

Exibe-se o histórico de commits, mostrando detalhes como o autor, data, e a mensagem do commit.

Fazer o Push

Utiliza-se git push para enviar as mudanças para o repositório remoto.

git push
▶ Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 400 bytes | 400.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/exemplo/repo.git
   e69de29..1a2b3c4  main -> main

Envia-se o commit local para o repositório remoto, atualizando-o com as mudanças locais.

Verificar o Status

Utiliza-se git status para verificar o estado após o push.

git status
▶ On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

Mostra-se que o branch local está atualizado com o branch remoto e não há mudanças no diretório de trabalho.

Ver Histórico de Commits com git log

Utiliza-se git log para ver o histórico de commits novamente.

git log
▶ commit 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s (HEAD -> main, origin/main)
Author: Seu Nome <[email protected]>
Date:   Wed Jun 13 12:34:56 2024 -0300

    Adiciona nova linha em arquivo.txt

Exibe-se o histórico de commits, mostrando que o commit local foi enviado para o repositório remoto.

Buscar Mudanças Remotas (fetch)

Utiliza-se git fetch para buscar as mudanças do repositório remoto.

git fetch
▶ remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 2 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), done.
From https://github.com/exemplo/repo
   1a2b3c4..5e6f7g8  main       -> origin/main

Busca-se as mudanças do repositório remoto sem mesclá-las automaticamente no branch atual.

Verificar Qual foi a Mudança

Utiliza-se git diff HEAD..FETCH_HEAD para ver as diferenças entre o branch local e o branch remoto.

git diff HEAD..FETCH_HEAD
▶ diff --git a/novo-arquivo.txt b/novo-arquivo.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/novo-arquivo.txt
@@ -0,0 +1 @@
+Conteúdo do novo arquivo

Mostra-se as diferenças entre o último commit no branch local e as mudanças buscadas do repositório remoto.

Mesclar Mudança

Utiliza-se git merge FETCH_HEAD para mesclar as mudanças do branch remoto no branch local.

git merge FETCH_HEAD
▶ Updating 1a2b3c4..5e6f7g8
Fast-forward
 novo-arquivo.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 novo-arquivo.txt

Mescla-se as mudanças buscadas do branch remoto no branch local.

Ver Histórico de Commits com git log

Utiliza-se git log para ver o histórico de commits novamente.

git log
▶ commit 5e6f7g8h9i0j1k2l3m4n5o6p7q8r9t0u (HEAD -> main, origin/main)
Author: Outro Desenvolvedor <[email protected]>
Date:   Wed Jun 13 13:00:00 2024 -0300

    Adiciona nova funcionalidade

commit 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s
Author: Seu Nome <[email protected]>
Date:   Wed Jun 13 12:34:56 2024 -0300

    Adiciona nova linha em arquivo.txt

commit 0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9
Author: Outro Desenvolvedor <[email protected]>
Date:   Wed Jun 13 11:00:00 2024 -0300

    Commit anterior feito por outra pessoa

Buscar e Mesclar Mudanças Remotas (pull)

Novas mudanças foram enviadas para o repositório remoto. Utiliza-se git pull para buscar e mesclar essas novas mudanças remotas em um único comando.

git pull
▶ remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), done.
From https://github.com/exemplo/repo
   5e6f7g8..9h0j1k2  main       -> origin/main
Updating 5e6f7g8..9h0j1k2
Fast-forward
 outro-arquivo.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 outro-arquivo.txt

O comando git pull combina git fetch e git merge, buscando e mesclando as mudanças remotas no branch local. A mensagem mostra que o arquivo outro-arquivo.txt foi adicionado no branch remoto e agora foi mesclado no branch local.

Ver Histórico de Commits com git log

Utiliza-se git log para ver o histórico de commits novamente.

git log
▶ commit 9h0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8 (HEAD -> main, origin/main)
Author: Mais Outro Desenvolvedor <[email protected]>
Date:   Wed Jun 13 14:00:00 2024 -0300

    Adiciona outro arquivo

commit 5e6f7g8h9i0j1k2l3m4n5o6p7q8r9t0u
Author: Outro Desenvolvedor <[email protected]>
Date:   Wed Jun 13 13:00:00 2024 -0300

    Adiciona nova funcionalidade

commit 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s
Author: Seu Nome <[email protected]>
Date:   Wed Jun 13 12:34:56 2024 -0300

    Adiciona nova linha em arquivo.txt

commit 0a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9
Author: Outro Desenvolvedor <[email protected]>
Date:   Wed Jun 13 11:00:00 2024 -0300

    Commit anterior feito por outra pessoa

O comando git log mostra o histórico completo de commits no branch atual. Neste caso, exibe três commits: o commit mais recente adicionando outro-arquivo.txt, o commit anterior adicionando uma nova funcionalidade e o commit inicial adicionando uma linha a arquivo.txt.

Atualizado

Isto foi útil?