Pular para o conteúdo
Jogos Digitais
Nesta página
  1. Objetivos de aprendizagem
  2. Pré-requisitos
  3. Materiais
  4. Conceitos
  5. Exemplos
  6. Tutorial passo a passo
  7. Imagens
  8. Indicação da interface
  9. O código completo
  10. Explicação do código
  11. Resultado esperado
  12. Problemas comuns
  13. Exercício guiado
  14. Desafio individual
  15. Desafio avançado (opcional)
  16. Critérios de avaliação
  17. Checklist de conclusão
  18. Extensão

Módulo 10 · Aula 10.3 · Git: o primeiro commit e o histórico

Carga horáriaDificuldadeFerramentaCompetências
10 h/a⭐⭐⭐Git (linha de comando)C6, C7

Objetivos de aprendizagem

  1. Explicar para que serve controle de versões.
  2. Criar um repositório, preparar arquivos e fazer commits.
  3. Ler o histórico e a diferença entre duas versões.
  4. Escrever mensagens de commit que digam o que mudou.
  5. Usar .gitignore para deixar fora o que o computador recria sozinho.

Pré-requisitos

Ter jogos prontos dos módulos anteriores.

Materiais

Git instalado (git-scm.com); terminal (no Windows, o Git Bash que vem com o Git); Caça-Estrelas (Módulo 0) e Chave da Porteira (Módulo 9), copiados para uma pasta de trabalho.

Conceitos

O problema. Quem nunca teve jogo_final.sb3, jogo_final2.sb3, jogo_final_agora_vai.sb3? O Git resolve isso: uma pasta só, e um histórico de "fotos" do projeto, cada uma com data, autor e um recado.

Palavras do Git.

PalavraQuer dizer
repositórioa pasta do projeto com o histórico guardado dentro (na pasta oculta .git)
commituma "foto" do projeto, com recado
preparar (git add)escolher o que vai entrar na próxima foto
histórico (git log)a lista de fotos
diferença (git diff)o que mudou, linha por linha

Os três passos de sempre. Mexer nos arquivos → git add → git commit -m "recado".

Mensagem de commit. Diz o que mudou, no presente ou no particípio, curta: "Jogador mais rápido", "Sol fraco: labirinto de noite". Mensagem ruim: "mudanças", "agora vai", "aaa".

Nome e e-mail. Todo commit leva autor. Antes do primeiro, cada aluno configura o próprio nome. O e-mail aparece no histórico e, no GitHub, fica público: a escola pode orientar o uso de um e-mail institucional ou do endereço que o próprio GitHub oferece para esconder o e-mail.

Arquivos de texto e arquivos fechados. O Git mostra a diferença linha por linha em arquivos de texto (scripts .gd, cenas .tscn, .json do GDevelop). Em arquivos fechados (o .sb3 do Scratch, imagens), ele guarda a versão, mas não mostra o que mudou dentro.

.gitignore. Lista do que o Git deve ignorar. No Godot, a pasta .godot/ é recriada sozinha ao abrir o projeto e não deve ir para o repositório. Todos os projetos Godot do curso já trazem um .gitignore com a linha .godot/.

Exemplos

Saídas reais, de uma pasta de teste feita na preparação do curso (o nome "Ana Clara" é de uma aluna fictícia; o caminho da pasta foi trocado por um de exemplo).

Primeiro commit do Caça-Estrelas:

$ git init -b main
Initialized empty Git repository in C:/Users/aluno/caca-estrelas/.git/
$ git status
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	README.md
	caca-estrelas.sb3
	project.json

nothing added to commit but untracked files present (use "git add" to track)
$ git add .
warning: in the working copy of 'README.md', LF will be replaced by CRLF the next time Git touches it
$ git commit -m "Primeira versão do Caça-Estrelas"
[main (root-commit) c4c605e] Primeira versão do Caça-Estrelas
 3 files changed, 77 insertions(+)
 create mode 100644 README.md
 create mode 100644 caca-estrelas.sb3
 create mode 100644 project.json
$ git log
commit c4c605e104d62aded5733fa9a3fb4c6ed6ec5e29
Author: Ana Clara <ana.clara@exemplo.com>
Date:   Fri Oct 30 08:53:20 2026 -0300

    Primeira versão do Caça-Estrelas
$ git log --oneline
c4c605e Primeira versão do Caça-Estrelas

O aviso LF will be replaced by CRLF é só o Git do Windows avisando que vai ajustar o fim das linhas do texto. Não é erro.

.gitignore e diferença no Chave da Porteira:

$ git status --short   (sem .gitignore)
?? .godot/
?? cenas/
?? ferramentas/
?? materiais/
?? modelos/
?? project.godot
?? scripts/
$ git status --short   (com .gitignore)
?? .gitignore
?? cenas/
?? ferramentas/
?? materiais/
?? modelos/
?? project.godot
?? scripts/
$ git diff
diff --git a/scripts/jogador.gd b/scripts/jogador.gd
index e76f4e7..5bcd7fb 100644
--- a/scripts/jogador.gd
+++ b/scripts/jogador.gd
@@ -2,7 +2,7 @@ extends CharacterBody3D
 ## Sertanejo do labirinto. Controle "de tanque": esquerda e direita giram o corpo,
 ## frente e trás andam para onde ele está olhando. A câmera vai presa atrás dele.
 
-const VELOCIDADE := 4.0  # metros por segundo
+const VELOCIDADE := 5.0  # metros por segundo
 const GIRO := 2.5        # radianos por segundo (cerca de 143 graus)
 
 var gravidade: float = ProjectSettings.get_setting("physics/3d/default_gravity")

Os textos entre parênteses ao lado de git status --short foram postos aqui para explicar; não fazem parte do comando. ?? quer dizer "arquivo novo, ainda fora do Git". No git diff, a linha com - é a antiga e a com + é a nova.

Tutorial passo a passo

Parte A. Configurar (40 min)

  1. Abra o Git Bash na pasta de trabalho.
  2. Configure o seu nome e o e-mail combinado com a escola:
git config --global user.name "Seu Nome"
git config --global user.email "email-combinado@exemplo.com"

Parte B. Primeiro commit (120 min)

  1. Entre na pasta do Caça-Estrelas (cd caca-estrelas) e rode, um de cada vez, conferindo a saída com a dos Exemplos:
git init -b main
git status
git add .
git commit -m "Primeira versão do Caça-Estrelas"
git log --oneline

Parte C. Projeto Godot com .gitignore (120 min)

  1. Na pasta do seu Projeto 6, confira se existe .gitignore com a linha .godot/. Rode git init -b main e git status --short: a pasta .godot/ não pode aparecer.
  2. Faça o primeiro commit.
  3. Mude a velocidade do jogador, rode git diff e leia a diferença. Faça o commit com uma mensagem boa.
  4. Faça mais três mudanças pequenas, cada uma com o seu commit.

Parte D. Voltar no tempo, com cuidado (120 min)

  1. git log --oneline mostra os códigos curtos dos commits. Para ver como um arquivo era num commit antigo, sem mudar nada: git show CODIGO:scripts/jogador.gd.
  2. Para desfazer uma mudança que ainda não foi para commit: git restore scripts/jogador.gd. Atenção: o que não estava em commit se perde.

Imagens

Não há capturas: o Git é usado no terminal, e as saídas reais estão nos Exemplos.

Indicação da interface

ComandoO que faz
git init -b maintransforma a pasta em repositório, com o ramo principal chamado main
git status / git status --shorto que mudou e o que está preparado
git add .prepara tudo o que mudou
git commit -m "..."tira a foto, com recado
git log / git log --onelinehistórico
git diffdiferença do que ainda não foi preparado
git show CODIGO:arquivoo arquivo como era naquele commit
git restore arquivodescarta a mudança que não foi para commit

O Godot 4.7.2 também tem um menu Controle de Versão (nome lido das traduções), que precisa de um complemento à parte. O curso usa a linha de comando, que funciona igual para qualquer ferramenta. O GitHub Desktop (desktop.github.com) é uma opção com botões, mas não foi testado nesta versão do curso.

O código completo

chave-da-porteira/.gitignore:

.godot/

Explicação do código

Uma linha basta: tudo dentro de .godot/ fica de fora. O Godot recria essa pasta quando o projeto é aberto (importa imagens, modelos e guarda configurações do editor).

Resultado esperado

Dois repositórios (Caça-Estrelas e Projeto 6), o segundo com pelo menos cinco commits de mensagens claras e sem a pasta .godot/.

Problemas comuns

SintomaCausaSolução
Author identity unknownnome e e-mail não configuradosParte A
.godot/ aparece no git statusfalta o .gitignore, ou foi criado depois do git addcriar o .gitignore; se já entrou, git rm -r --cached .godot
not a git repositoryo terminal está em outra pastacd para a pasta do projeto
abriu um editor estranho e não saifez git commit sem -musar sempre -m "recado" (no editor Vim, Esc e depois :q! sai sem salvar)

Exercício guiado

Por que a pasta .godot/ fica fora do repositório? (Resposta: o Godot recria tudo nela; guardar só ocupa espaço e gera diferenças inúteis a cada vez que alguém abre o projeto.)

Desafio individual

Leia o histórico de um colega (git log) e diga, só pelas mensagens, o que ele fez no projeto. As mensagens contam a história?

Desafio avançado (opcional)

Descubra o que faz git log --stat e use no seu Projeto 6.

Critérios de avaliação

  • Commits com mensagens que dizem o que mudou.
  • .gitignore funcionando.
  • Lê um git diff e explica.

Checklist de conclusão

Extensão

Pense em algo fora da computação que tem "histórico de versões" (um caderno de receitas, uma redação com rascunhos). Como seria um commit ali?