Controlo de versões com Git

Índice, commits, branches, integração e um build Java reproduzível com Gradle.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Três áreas

AçãoWorking treeÍndiceÚltimo commit
Estado inicialAAA
Editar e git addBBA
Voltar a editarCBA
Commit sem novo addCBB

git add congela o instante; git commit não relê o ficheiro.

  • git diff: ficheiro contra índice. git diff --cached: índice contra commit.
  • git status --short: primeira coluna é o índice, segunda o ficheiro. MM muda nos dois; ?? não é seguido.
  • Revê estado e ambos os diffs antes de confirmar; prepara caminhos concretos.

Branches e integração

Um branch é uma referência móvel. HEAD aponta em geral para o branch atual. Criar um branch não copia pastas.

git switch -c movimento
# editar, preparar, commits
git switch main
git merge movimento

O merge integra no branch atual: fast-forward se main for antepassado, senão combina e pode criar um commit com dois pais. Conflito resolve-se escolhendo o comportamento, removendo marcadores, testando e preparando; git merge --abort tenta repor o estado anterior ao merge. Começa com a árvore limpa, porque mudanças locais por guardar podem impedir essa reposição.

Remoto e recuperação

ComandoEfeito
git fetch originObtém objetos e segue remotos, sem integrar.
git pull --ff-onlyIntegra só sem divergência.
git push -u origin movimentoPublica e configura acompanhamento.
git revert <commit>Inverte com um commit novo; para história partilhada.
git restore f / --staged fDescarta edição / retira do índice, mantendo a edição.

Rebase reaplica commits com identificadores novos: coordena em trabalho partilhado. reset --hard destrói edição local. .gitignore não remove ficheiros já seguidos.

Build com Gradle

  • Guarda o Wrapper e corre ./gradlew: fixa a versão do Gradle. O JDK da ferramenta pode diferir do alvo.
  • options.release = 8 fixa sintaxe, bytecode e APIs; só sourceCompatibility/targetCompatibility não chega.
  • implementation é do programa; testImplementation e testRuntimeOnly são dos testes. useJUnitPlatform() seleciona a plataforma JUnit; os testes Jupiter precisam das dependências e do motor Jupiter declarados no projeto.
  • src/main/java e src/test/java separam código e testes. test corre testes, run executa a classe principal configurada (Main no exemplo da cadeira), jacocoTestReport gera cobertura.
  • Perante falha, lê a primeira causa: descarga, JDK ou compilação.

Configuração completa do projeto Java.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.