Da Anonimo (non verificato) , 29 Aprile 2026

Quattro tipi di oggetto

Git memorizza tutto come oggetti content-addressable in .git/objects. Ci sono quattro tipi: blob (contenuti file), tree (elenco directory di blob e sottotree), commit (puntatore snapshot con autore, committer, messaggio, genitori) e tag (tag annotato con firmatario e messaggio).

Da Anonimo (non verificato) , 29 Aprile 2026

Il problema risolto dai worktree

Sei a meta feature quando arriva una richiesta urgente di hotfix. Stash o cambio contesto sono rischiosi e lenti. I worktree consentono di estrarre branch aggiuntivi in directory separate, tutti condividendo un database oggetti sottostante.

Da Anonimo (non verificato) , 29 Aprile 2026

Il caso per la firma SSH

GPG e potente ma operativamente doloroso. Da Git 2.34, e possibile firmare commit e tag con le chiavi SSH gia usate per il push. Niente keyring, niente giochi di passphrase.

Da Anonimo (non verificato) , 29 Aprile 2026

Perche firmare

Un commit firmato attesta crittograficamente "questo commit e stato scritto dal possessore di questa chiave, immutato dalla firma". Le firme difendono da impersonificazione e manomissione.

Da Anonimo (non verificato) , 29 Aprile 2026

Cosa fa gitattributes

.gitattributes applica impostazioni per percorso: fine riga, driver diff e merge, filtri di export, dichiarazioni di codifica e comportamento di merge. A differenza di .gitignore, gli attributi si applicano ai file tracciati.

Fine riga

# .gitattributes
* text=auto
*.sh text eol=lf
*.bat text eol=crlf
*.png binary

Dopo aver aggiunto questo file, eseguire git add --renormalize ..

Da Anonimo (non verificato) , 29 Aprile 2026

Perche diff personalizzati

Il diff predefinito di Git e riga per riga sul testo. Per formati binari (PDF, DOCX, immagini) e testo strutturato dove i diff per riga non aiutano, i driver diff personalizzati producono qualcosa che gli umani possono leggere.

Da Anonimo (non verificato) , 29 Aprile 2026

Strategie vs driver

Una strategia di merge decide come Git combina due storie — ort (default da Git 2.34), recursive, resolve, octopus e ours. Un driver di merge e logica per-file che gira quando entrambi i lati hanno cambiato lo stesso file.

Da Anonimo (non verificato) , 29 Aprile 2026

Dopo i fatti

Dove gli hook al momento del commit modellano i commit, gli hook in questa pagina reagiscono ad essi. post-commit gira localmente dopo ogni commit, pre-push gira prima del trasferimento al remoto, e post-receive gira sul server dopo che un push e arrivato.

Da Anonimo (non verificato) , 29 Aprile 2026

Hook lato client

Gli hook sono script eseguibili in .git/hooks/ (o dove punta core.hooksPath). Git li invoca in momenti ben definiti. I tre hook al momento del commit consentono di applicare politiche prima che il commit sia finalizzato.

Da Anonimo (non verificato) , 29 Aprile 2026

Cosa fa rerere

Rerere — "reuse recorded resolution" — osserva la risoluzione di un conflitto di merge, la registra e la riproduce la volta successiva che lo stesso conflitto compare. E prezioso su branch di lunga durata che fanno rebase o merge ripetuti contro un main attivo.