Da Anonimo (non verificato) , 29 Aprile 2026

Perche fare squash

Un branch di feature spesso accumula commit "WIP", "fix typo" e "address review" che seppelliscono l'intento. Lo squash li condensa in un piccolo numero di commit logicamente significativi prima del merge.

Squash al merge

git checkout main
git merge --squash feature
git commit -m "Add feature X"

Squash con rebase interattivo

git rebase -i main

Cambiare pick in squash o fixup.

Da Anonimo (non verificato) , 29 Aprile 2026

Risposta agli incidenti

Hai committato una chiave API, password o chiave privata. Rimuoverla dall'ultimo commit non basta — Git la mantiene in ogni commit precedente fino a riscrittura della storia.

Passo 1: ruotare immediatamente

Prima di toccare il repo, revocare la credenziale. Assumere che la storia gia pubblicata sia stata replicata, scrappata o cachata.

Da Anonimo (non verificato) , 29 Aprile 2026

Perche filter-repo

git filter-repo e il moderno sostituto del deprecato git filter-branch. E drasticamente piu veloce — talvolta 100x — piu sicuro per default, e fornisce le operazioni di alto livello che la chirurgia della storia richiede.

Installazione

Su macOS: brew install git-filter-repo. Su Debian/Ubuntu: apt install git-filter-repo.

Da Anonimo (non verificato) , 29 Aprile 2026

Il modello subtree

Un subtree fonde la storia di un altro repository in una sottodirectory del proprio. A differenza dei submodule, non c'e un gitlink separato e nessun comando extra richiesto al clone — chi clona ottiene automaticamente i contenuti del subtree.

Da Anonimo (non verificato) , 29 Aprile 2026

La lista delle frustrazioni

I submodule sono potenti ma fanno inciampare ripetutamente i nuovi utenti. Questa pagina cataloga i fallimenti piu comuni e le ricette che li risolvono.

Da Anonimo (non verificato) , 29 Aprile 2026

Cosa sono i submodule

Un submodule e un repository Git annidato dentro un altro. Il repository padre registra l'URL del submodule e uno SHA di commit specifico, cosi chi clona il padre puo recuperare esattamente il codice testato insieme.

Da Anonimo (non verificato) , 29 Aprile 2026

Bisezione senza intervento manuale

Il bisect manuale richiede un giudizio umano a ogni passo. git bisect run automatizza il ciclo: fornire uno script che esce 0 per buono, non-zero per cattivo, e 125 per "salta questo commit".

Da Anonimo (non verificato) , 29 Aprile 2026

Ricerca binaria nella storia

git bisect esegue una ricerca binaria sui commit per trovare quello che ha introdotto un bug. Dato un commit noto-buono e uno noto-cattivo, Git estrae i commit intermedi e chiede di testarli. Ogni risposta dimezza lo spazio di ricerca, quindi 1024 commit si risolvono in circa 10 passi.

Da Anonimo (non verificato) , 29 Aprile 2026

Cosa fa il cherry-pick

git cherry-pick applica il diff di uno o piu commit sul branch corrente come nuovi commit. E lo strumento giusto quando si vuole un cambiamento specifico senza fare merge dell'intero branch — tipico per il backport di fix su un branch di release.

Da Anonimo (non verificato) , 29 Aprile 2026

Perche il rebase interattivo

Il rebase interattivo riscrive una sequenza di commit in una storia piu pulita e significativa prima della pubblicazione. E lo strumento chirurgico di Git: si possono riordinare, modificare, accorpare con squash, fixare, eliminare, rinominare o dividere i commit, tutto in una singola sessione guidata.

La lista todo

Eseguire git rebase -i apre un editor con una lista todo. Ogni riga ha un verbo e un commit. Riordinare le righe per riordinare i commit.