Git Worktree: Lavorare su Pi霉 Branch Senza Stash

Sei a met脿 di un feature branch, tre file modificati e niente ancora committato, quando un collega ti scrive per un crash da null pointer in produzione. La mossa classica 猫 git stash, checkout di main, risolvi, pusha, poi git stash pop sperando che il lavoro a met脿 non dipendesse dai file da cui sei appena scappato. git worktree salta tutto questo. Fa il checkout del branch di hotfix in una seconda cartella, accanto al tuo feature branch, entrambe appoggiate sullo stesso repository. ...

24 ottobre 2026 路 5 minuti 路 1029 parole 路 SpaghettiCoder

Git Reset vs Revert vs Restore: differenze e come usarli

Esegui git reset --hard su un commit che il tuo team ha gi脿 scaricato e la tua storia smette di corrispondere alla loro. Esegui git revert su un typo che non hai ancora pushato e aggiungi un commit inutile al log. Git ha quattro comandi per annullare le cose: restore, reset, commit --amend e revert, e non sono intercambiabili. Scegli quello sbagliato e il risultato 猫 che non succede niente, oppure succede molto pi霉 di quanto volevi. ...

3 ottobre 2026 路 7 minuti 路 1360 parole 路 SpaghettiCoder

Git Bisect: Trovare il Commit che ha Introdotto un Bug

La test suite 猫 verde da tre settimane. Oggi npm test fallisce su un鈥檃sserzione che non ha niente a che fare con quello che hai appena modificato, e git log v1.4.0..HEAD mostra 340 commit di quattro persone dall鈥檜ltima release, di cui qualcuno era sicuro che funzionasse. Leggere ogni diff ti costa una giornata. Fare checkout di commit a caso 猫 pi霉 veloce, ma resta comunque non un piano. git bisect trasforma tutto questo in una ricerca binaria. Gli dai un commit che sai essere buono e uno che sai essere rotto; lui fa il checkout del commit a met脿 tra i due e aspetta che tu lo testi e riporti il risultato. Ogni risposta dimezza l鈥檌ntervallo. 340 commit si risolvono in al massimo 9 test, perch茅 2^9 = 512. ...

22 settembre 2026 路 6 minuti 路 1157 parole 路 SpaghettiCoder

Git Rebase vs Merge: differenze e quando usarli

Fai il pull dell鈥檜ltimo main e Git si blocca con CONFLICT (content): Merge conflict in checkout.js. Risolvi il conflitto e nel log compare un commit chiamato Merge branch 'main' into feature/checkout, appoggiato sopra i tre commit che avevi effettivamente scritto tu. Quattro commit, una sola modifica reale. Un collega che legge quella storia il mese prossimo non riesce pi霉 a distinguerli. git merge e git rebase rispondono alla stessa domanda: come allineo il mio branch alle modifiche fatte altrove. Lasciano tracce molto diverse, e scegliere quello sbagliato su un branch condiviso causa danni reali. ...

13 settembre 2026 路 8 minuti 路 1656 parole 路 SpaghettiCoder