Foglio informativo sui comandi Git: I comandi che usi effettivamente, con esempi
Un riferimento Git pratico raggruppato in base a ciò che stai cercando di fare, dal tuo primo commit all’annullamento di un errore. Tienilo aperto mentre lavori e utilizza la guida di annullamento prima di intraprendere qualcosa di rischioso.
- Una modifica si sposta attraverso tre aree: directory di lavoro, area di staging e repository.
git statusè il comando più sicuro che hai, quindi eseguilo costantemente.- Usa
git revertper annullare i commit condivisi e mantienigit reset --hardper il lavoro locale di cui sei sicuro. git reflogdi solito può salvare i commit che pensavi fossero persi.
Nessuno ricorda ogni comando Git e non è necessario. Questo cheat sheet dei comandi Git si concentra su un piccolo insieme che copre quasi tutto il lavoro quotidiano, raggruppato in base al lavoro che stai tentando di svolgere.
Abbiamo testato i comandi locali in un repository demo usa e getta utilizzando Git per Windows e l’output mostrato proviene da quell’esecuzione, con gli avvisi di fine riga rimossi. Gli hash di commit saranno diversi. I comandi remoti necessitano di un server, quindi non li abbiamo eseguiti. Nuovo al controllo della versione? Inizia con il nostro tutorial Git per principianti.
Come pensa Git: tre aree
La maggior parte della confusione scompare una volta che sai dove si trova il cambiamento:
| Zona | Cosa contiene | Ci siamo trasferiti lì |
|---|---|---|
| Directory di lavoro | I tuoi file mentre li modifichi | Modifica |
| Area di sosta (indice) | Modifiche selezionate per il prossimo commit | git aggiungi |
| Deposito locale | La cronologia dei commit salvata | gitcommit |
| Archivio remoto | La copia condivisa, ad esempio su GitHub | spingi |
Impostazione e avvio di un progetto
| Comando | Cosa fa |
|---|---|
git config --global utente.nome "Asha" |
Imposta il tuo nome sui commit |
git config --global user.email "a@b.com" |
Imposta la tua email sui commit |
git config --global init.defaultBranch principale |
Nomina nuovi rami predefiniti main |
git init |
Crea un repository nella cartella corrente |
git clone <url> |
Scarica un repository esistente |
gitconfig --list |
Mostra le tue impostazioni attuali |
Salva il tuo lavoro
| Comando | Cosa fa |
|---|---|
stato git |
Mostra cosa è cambiato |
git aggiungi file.txt |
Mette in scena un file |
git aggiungi . |
Mette in scena tutte le modifiche in questa cartella |
git aggiungi -p |
Mette in scena le parti selezionate di un file |
git diff |
Mostra le modifiche non graduali |
git diff --staged |
Mostra cosa sarà impegnato |
git commit -m "Messaggio" |
Salva le modifiche in fasi come commit |
git commit -am "Messaggio" |
Mette in scena i file tracciati e ne esegue il commit |
Ecco come cambia la visualizzazione breve dello stato man mano che un nuovo file si sposta:
$ echo "hello" > app.txt
$ git status --short
?? app.txt
$ git add app.txt
$ git status --short
A app.txt
$ git commit -m "Add app file"
?? significa non tracciato e A significa aggiunto allo staging. Nel formato a due colonne, la colonna di sinistra è l’area di staging e la colonna di destra è la directory di lavoro. Tieni presente che git commit -am salta i file nuovi di zecca, quindi devi prima aggiungerli esplicitamente.
Rami
| Comando | Cosa fa |
|---|---|
ramo git |
Elenca le filiali locali |
git ramo -a |
Include filiali remote |
funzionalità/accesso di git switch |
Si sposta in una filiale |
git switch -c funzionalità/accesso |
Crea un ramo e si sposta su di esso |
funzionalità/accesso di unione di git |
Unisce quel ramo a quello corrente |
git rebase principale |
Riproduce i tuoi commit sopra main |
git branch -d funzionalità/accesso |
Elimina un ramo unito |
git branch -D funzionalità/accesso |
La forzatura elimina un ramo non unito |
Ecco un piccolo ramo delle funzionalità dall’inizio alla fine:
$ git switch -c feature/login
$ echo "login" >> app.txt
$ git commit -am "Add login"
$ git switch main
$ git merge --no-edit feature/login
$ git log --oneline --graph
* d0450b6 Add login
* 676b684 Add app file
$ git branch -d feature/login
Deleted branch feature/login (was d0450b6).
La cronologia è una linea retta perché main non si era mosso, quindi Git ha eseguito un’unione rapida. Vedrai ancora git checkout nelle guide più vecchie. Funziona, ma i comandi più recenti switch e restore dividono i suoi numerosi compiti in compiti più chiari. Per scegliere tra fusione e rebase, leggi Git merge vs rebase.
Lavorare con i telecomandi
| Comando | Cosa fa |
|---|---|
git remoto -v |
Elenca i telecomandi e i relativi URL |
git remote aggiungi origine <url> |
Collega un telecomando |
prendi |
Scarica le modifiche senza unirle |
tira, tira |
Recupera e poi si integra nel tuo ramo |
spingi |
Carica i tuoi commit |
git push -u funzione/accesso origine |
Spinge un nuovo ramo e lo segue |
git push origin --delete feature/login |
Elimina un ramo remoto |
git push --force-with-lease |
La forza spinge, ma solo se nessun altro ha spinto |
fetch è sempre sicuro, perché non modifica mai i tuoi file. Se è necessario sovrascrivere un ramo dopo un rebase, preferire --force-with-lease al semplice --force, poiché si rifiuta di cancellare i nuovi commit di un collega.
Stash: metti da parte il lavoro
Stash è utile quando devi cambiare attività ma non sei pronto per impegnarti:
$ echo "wip" >> app.txt
$ git stash
$ git status --short
# clean, the change is put away
$ git stash pop
$ git status --short
M app.txt
| Comando | Cosa fa |
|---|---|
git stash |
Salva le modifiche e pulisce la directory di lavoro |
git stash -u |
Include file non tracciati |
elenco di git |
Mostra le scorte salvate |
git stash pop |
Ripristina l’ultima scorta e la rimuove |
git stash applica |
Lo ripristina ma lo mantiene salvato |
Visualizza la cronologia
| Comando | Cosa fa |
|---|---|
git log --oneline |
Mostra una riga per commit |
git log --oneline --graph --all |
Disegna tutti i rami |
git log -p file.txt |
Mostra le modifiche di un file nel tempo |
git mostra <hash> |
Mostra un commit in dettaglio |
git colpa file.txt |
Mostra chi ha modificato per ultimo ciascuna riga |
git reflog |
Appare ovunque sia stato HEAD |
git bisect |
Il codice binario cerca il commit che ha aggiunto un bug |
Annullare gli errori: “Voglio…”
Questa è la parte che la maggior parte delle persone cerca. Trova la tua situazione:
| Situazione | Comando |
|---|---|
| Elimina le modifiche non graduali in un file | git ripristina il file.txt |
| Rimuovi un file dallo stage ma mantieni le modifiche | git ripristino --staged file.txt |
| Correggi il messaggio o i file dell’ultimo commit | git commit --modifica |
| Annulla l’ultimo commit, mantenendo le modifiche in fase | git reset --soft HEAD~1 |
| Annulla l’ultimo commit, mantenendo le modifiche senza stage | git resetta HEAD~1 |
| Annulla un commit inviato in modo sicuro | git ripristinare <hash> |
| Buttare via tutte le modifiche locali | git reset --hard |
| Rimuovi i file non tracciati | git clean -fd (anteprima con -n) |
| Recupera un commit “perso”. | git reflog, quindi git branch rescue <hash> |
Suggerimento: Prima di qualsiasi rischio, corri git branch backup. Non costa nulla e ti dà un’etichetta a cui restituire. git reset --hard e git clean possono distruggere in modo permanente il lavoro non ancora eseguito, che nemmeno reflog può recuperare.
Reset vs ripristino vs ripristino
Questi tre nomi causano molta confusione, ma fanno cose abbastanza diverse:
| Comando | Agisce su | Cambia la cronologia? | Sicuro sui rami condivisi? |
|---|---|---|---|
ripristino git |
File | No | Sì, ma scarta le modifiche locali |
git ripristina |
Un commit, aggiungendo il suo opposto | Aggiunge ad esso | Sì |
gitreimpostato |
Il puntatore del ramo | Lo riscrive | No |
Nella nostra demo abbiamo commesso una linea errata e l’abbiamo ripristinata. Il file è tornato al contenuto precedente, mentre l’errore è rimasto visibile nel registro come cronologia:
$ echo "oops" >> app.txt
$ git commit -am "Bad change"
$ git revert --no-edit HEAD
$ cat app.txt
hello
login
Quindi git reset --soft HEAD~1 ha rimosso l’ultimo commit ma ha mantenuto le sue modifiche, che git status --short ha mostrato come M app.txt.
Tag
| Comando | Cosa fa |
|---|---|
etichetta git |
Elenca i tag |
tag git v1.0 |
Crea un tag leggero |
git tag -a v1.0 -m "Rilascio" |
Crea un tag annotato, ideale per le versioni |
git push origine v1.0 |
Invia un tag (i tag non vengono inviati per impostazione predefinita) |
I tag spesso attivano pipeline di rilascio, come spiega la nostra guida CI/CD di GitHub Actions.
Un semplice flusso di lavoro quotidiano
git switch main
git pull
git switch -c feature/search
# edit files
git status
git add -p
git commit -m "Add search by product name"
git push -u origin feature/search
# open a pull request, get a review, then merge
Scrivi messaggi di commit che spieghino la modifica nell’imperativo, come “Correggi il reindirizzamento dell’accesso”. Ti ringrazierai leggendo il registro tra sei mesi.
Errori comuni
- Commit secret. La rimozione di un file in un commit successivo non lo rimuove dalla cronologia. Ruota immediatamente il segreto e usa
.gitignore. - Riscrivere la cronologia condivisa. Non reimpostare o riprogrammare i commit che altri hanno già effettuato.
- Utilizzare
git add .alla cieca. Controllare primagit status, in modo che i file di build e i log rimangano fuori. - Utilizzando semplice
--force. Preferisco--force-with-lease. - Effettuare commit enormi. Quelli piccoli sono più facili da rivedere, ripristinare e dividere in due.
Considerazioni finali
Impara le tre aree e una dozzina di comandi e Git smetterà di fare paura. Tieni la tabella di annullamento a portata di mano e ricorda che git status e git reflog sono la tua rete di sicurezza. Per creare fiducia, creare un archivio usa e getta e romperlo e ripararlo deliberatamente, poiché è il posto più economico per commettere errori.
Domande frequenti
Quali sono i comandi Git più utilizzati?
Il set quotidiano è git status, aggiungi, commit, push, pull, switch, branch, merge e log. Quei pochi comandi coprono gran parte di una tipica giornata lavorativa.
Come posso annullare il mio ultimo commit in Git?
Se è locale, usa git reset –soft HEAD~1 per mantenere le modifiche in fase. Se l’hai già inviato, usa git revert in modo che la cronologia rimanga intatta per gli altri.
Qual è la differenza tra git fetch e git pull?
git fetch scarica solo nuovi dati e lascia intatti i tuoi file. git pull recupera e quindi unisce o ribasa tali modifiche nel ramo corrente.
Qual è la differenza tra git reset e git revert?
git reset sposta il puntatore del ramo e può riscrivere la cronologia. git revert aggiunge un nuovo commit che ne annulla uno precedente, rendendolo sicuro sui rami condivisi.
Posso recuperare un ramo eliminato in Git?
Di solito sì. Trova il suo ultimo commit con git reflog, quindi ricrea il ramo con il nome del ramo git seguito dall’hash, a condizione che Git non lo abbia ancora ripulito.
Continua a imparare
Hai bisogno di aiuto con test, WordPress o SEO?
Aiutiamo i team a fornire software migliore e a far crescere i loro siti. Raccontaci a cosa stai lavorando e ti suggeriremo chiaramente il prossimo passo.
Altre guide su test, intelligenza artificiale e sviluppo moderno
Ti è piaciuto questo articolo? Scegli un argomento e passa direttamente ai nostri tutorial più recenti.
Spiegazione delle allucinazioni dell'intelligenza artificiale: perché i modelli linguistici inventano le cose e come ridurle
Spiegazione delle allucinazioni dell'intelligenza artificiale: cosa sono, perché i modelli linguistici le producono, tipi comuni, come ridurle con b…
Leggi l'articolo →DevOpsSpiegazione delle variabili d'ambiente: file .env, segreti e configurazione eseguiti correttamente
Variabili d'ambiente spiegate con esempi Python che abbiamo eseguito: lettura e impostazione, perché ogni valore è una stringa, file .env, ereditari…
Leggi l'articolo →Sviluppo softwareSpiegazione della limitazione della velocità API: algoritmi, intestazioni e gestione degli errori 429
La limitazione della velocità dell'API spiegata con una simulazione che abbiamo eseguito: bucket di token, finestra fissa, finestra scorrevole, risp…
Leggi l'articolo →Automazione dei testDerisione in Python: unittest.mock, patch e gli errori che fanno mentire i test
Mocking in Python con unittest.mock, testato: Mock e return_value, side_effect, patch dove viene utilizzato un nome, specifiche e autospec, date moc…
Leggi l'articolo →Test del softwareSpiegazione della copertura del codice: copertura di linea o di filiale e cosa significa realmente il 100%.
Copertura del codice spiegata con una vera esecuzione di cover.py: copertura di linea, ramo e condizione, lettura di un rapporto, perché la copertur…
Leggi l'articolo →Database e SQLDELETE vs TRUNCATE vs DROP in SQL: differenze, rollback e quando utilizzarli
DELETE vs TRUNCATE vs DROP spiegato con SQL testato: cosa rimuove, rollback, trigger, reimpostazione dell'identità, velocità e come differiscono Pos…
Leggi l'articolo →Database e SQLSpiegazione delle visualizzazioni SQL: crea, utilizza ed evita le insidie, con esempi
Viste SQL spiegate con le query che abbiamo eseguito: creazione di una vista, risultati in tempo reale, nascondere colonne, prestazioni, viste aggio…
Leggi l'articolo →Sviluppo softwareInterfaccia TypeScript e tipo: differenze reali, testate con il compilatore
Interfaccia TypeScript vs tipo, verificata con il vero compilatore: cosa possono fare entrambi, cosa può fare solo uno, fusione delle dichiarazioni,…
Leggi l'articolo →Sviluppo softwareSpiegazione di Python *args e **kwargs: funzioni flessibili con esempi chiari
Python *args e **kwargs spiegati con il codice che abbiamo eseguito: compressione e decompressione, ordine dei parametri, argomenti solo per parole …
Leggi l'articolo →Sviluppo softwareFunzioni Lambda Python: sintassi, usi reali e quando non usarli
Funzioni lambda Python spiegate con il codice che abbiamo eseguito: sintassi, ordinamento con chiave, mappa e filtro, chiusure, trap dell'associazio…
Leggi l'articolo →Intelligenza artificialeCosa sono gli agenti AI? Come funzionano, con un semplice ciclo di agenti che puoi eseguire
Cosa sono gli agenti IA? Una semplice guida al ciclo dell'agente, agli strumenti, alla memoria e ai guardrail, con un piccolo ciclo Python che abbia…
Leggi l'articolo →DevOpsMonitoraggio vs osservabilità: la vera differenza, con log, metriche e tracce
Spiegazione del monitoraggio e dell'osservabilità: errori noti e sconosciuti, log, metriche e tracce, una procedura dettagliata sugli incidenti di p…
Leggi l'articolo →DevOpsVolumi Docker e montaggi di associazione: mantenere i dati del contenitore nel modo giusto
Volumi Docker e montaggi di collegamento spiegati: perché i dati del contenitore scompaiono, volumi denominati, montaggi di collegamento, tmpfs, ese…
Leggi l'articolo →Automazione dei testTDD vs BDD: differenze chiave, una caratteristica costruita in entrambi i modi e quando utilizzarli ciascuno
TDD vs BDD spiegato con una funzione di sconto costruita in entrambi i modi: refactoring rosso-verde con il codice che abbiamo eseguito, scenari "Da…
Leggi l'articolo →Test del softwareTest di accettazione da parte dell'utente (UAT): processo, lista di controllo ed esempi reali
Spiegazione del test di accettazione dell'utente: chi lo esegue, in cosa differisce dal QA, un processo in sette fasi, un modello di test case UAT, …
Leggi l'articolo →Database e SQLSpiegazione dei valori SQL NULL: IS NULL, COALESCE, NULLIF e le trappole da evitare
Valori SQL NULL spiegati con le query che abbiamo eseguito: logica a tre valori, IS NULL, COALESCE, NULLIF, come aggregazioni, join e ordinamento tr…
Leggi l'articolo →Database e SQLIstruzione SQL CASE WHEN: sintassi, esempi reali ed errori comuni
SQL CASE WHEN spiegato con le query che abbiamo eseguito: moduli semplici e cercati, ordine delle condizioni, pivot con SUM, trucchi COUNT, ordiname…
Leggi l'articolo →Sviluppo softwareCos'è il JWT? Token Web JSON spiegati con un esempio funzionante
Cos'è il JWT? Spiegazione dei token Web JSON: le tre parti, un token creato e manomesso nel codice che abbiamo eseguito, JWT e sessioni, archiviazio…
Leggi l'articolo →Sviluppo softwareSpiegazione del loop di eventi JavaScript: stack di chiamate, microtask e timer con esempi
Il ciclo di eventi JavaScript spiegato con il codice che abbiamo eseguito: stack di chiamate, code di attività e microtask, perché setTimeout 0 non …
Leggi l'articolo →Sviluppo softwareSpiegazione dei generatori Python e del rendimento: risparmia memoria con esempi reali
Generatori Python e rendimento spiegati con il codice che abbiamo eseguito: come vengono messi in pausa e ripresi, misurato il risparmio di memoria,…
Leggi l'articolo →Intelligenza artificialeCosa sono gli incorporamenti? I vettori e la somiglianza del coseno spiegati semplicemente
Cosa sono gli incorporamenti? Una guida in linguaggio semplice ai vettori, alla similarità del coseno e alla ricerca semantica, con un piccolo esemp…
Leggi l'articolo →DevOpsDistribuzione blu-verde rispetto a quella canaria: differenze, compromessi e come scegliere
Spiegazione della distribuzione blu-verde e canary: come funziona ciascuna, costi, rischi e rollback, bucket utente stabile che abbiamo testato, mig…
Leggi l'articolo →Automazione dei testTest instabili: quali sono le cause e come risolverli definitivamente
Test instabili spiegati con demo che abbiamo eseguito: le cause principali, come confermarne e diagnosticarne uno, soluzioni adeguate per tempistich…
Leggi l'articolo →Test del softwareTest di carico e test di stress: differenze, metriche ed esempi k6
Spiegazione del test di carico e dello stress test: cosa dimostra ciascuno, test di picco e di assorbimento, le metriche che contano, perché le medi…
Leggi l'articolo →Test del softwareCaso di test e scenario di test: differenze chiave, esempi e quando utilizzarli
Spiegazione del caso di test e dello scenario di test: definizioni chiare, una tabella affiancata, una funzione di reimpostazione della password pre…
Leggi l'articolo →Database e SQLOttimizzazione delle query SQL: leggi i piani di esecuzione e correggi query lente, con tempistiche
Ottimizzazione delle query SQL testata su un milione di righe: leggi i piani di esecuzione, aggiungi gli indici corretti, correggi filtri non aggior…
Leggi l'articolo →Database e SQLSQL UNION vs UNION ALL: differenze, esempi e prestazioni testate
SQL UNION vs UNION ALL spiegati con le query che abbiamo eseguito: duplicati, regole seguite da entrambi, un vero bug di dati, prestazioni misurate,…
Leggi l'articolo →Sviluppo softwareTutorial sull'API di recupero JavaScript: GET, POST, gestione degli errori e timeout
Un tutorial sull'API JavaScript Fetch testato su un server locale: GET e POST, perché 404 non genera eccezioni, un helper riutilizzabile, stringhe d…
Leggi l'articolo →Sviluppo softwareGestione dei file Python: lettura, scrittura, CSV, JSON e pathlib con esempi
Gestione dei file Python spiegata con il codice che abbiamo eseguito: modalità aperte, con, lettura di file di grandi dimensioni, CSV, JSON, pathlib…
Leggi l'articolo →Sviluppo softwareClassi e oggetti Python: tutorial OOP con esempi reali
Classi e oggetti Python spiegati con il codice che abbiamo eseguito: __init__, metodi, attributi di classe e istanza, ereditarietà, proprietà, metod…
Leggi l'articolo →Intelligenza artificialeChe cos'è un modello linguistico di grandi dimensioni? Come funzionano i LLM, spiegato senza esagerazioni
Cos’è un modello linguistico ampio? LLM spiegati in un linguaggio semplice: token, incorporamenti, attenzione, formazione, finestre di temperatura e…
Leggi l'articolo →DevOpsComandi Linux per principianti: la guida essenziale del terminale con esempi
Comandi Linux per principianti, raggruppati per attività: navigazione, file, visualizzazione log, grep, pipe, permessi, processi e archivi, con un e…
Leggi l'articolo →Automazione dei testSelenio vs drammaturgo: differenze chiave, codice a confronto e quale scegliere
Selenium vs Playwright a confronto: architettura, attesa, supporto per browser e linguaggio, debug, lo stesso test in entrambi gli strumenti, consig…
Leggi l'articolo →Test del softwarePartizionamento di equivalenza: tecnica di progettazione dei test spiegata con esempi pratici
Spiegazione del partizionamento di equivalenza: come trovare partizioni valide e non valide, esempi funzionanti per età, password e coupon, test che…
Leggi l'articolo →Test del softwareGravità vs priorità nel test del software: differenze, matrice ed esempi reali
Spiegazione della gravità e della priorità nei test del software: definizioni chiare, una matrice a quattro vie con esempi, scale di livello, chi im…
Leggi l'articolo →Database e SQLEsercitazione sulle sottoquery SQL: tipi, sottoquery correlate ed EXISTS con esempi
Un tutorial sulle sottoquery SQL con le query che abbiamo eseguito: sottoquery scalari, IN, FROM e SELECT, sottoquery correlate, EXISTS, trap NOT IN…
Leggi l'articolo →Database e SQLSpiegazione di transazioni SQL e ACID: COMMIT, ROLLBACK e livelli di isolamento
Transazioni SQL e ACID spiegate con un bonifico bancario eseguito: COMMIT, ROLLBACK, punti di salvataggio, blocchi, livelli di isolamento, letture s…
Leggi l'articolo →Sviluppo softwareCheat sheet dei comandi Git: i comandi che usi effettivamente, con esempi
Un cheat sheet dei comandi Git raggruppato per attività: configurazione, staging, rami, telecomandi, stash, cronologia ed errori di annullamento, co…
Leggi l'articolo →Sviluppo softwareSpiegazione delle promesse JavaScript: quindi, cattura, Promise.all ed errori comuni
Promesse JavaScript spiegate con il codice che abbiamo eseguito: stati, catene then e catch, gestione degli errori, Promise.all, allSettled, race an…
Leggi l'articolo →Sviluppo softwareTutorial sul dizionario Python: metodi, esempi e modelli comuni
Un tutorial sul dizionario Python con il codice che abbiamo eseguito: creazione, lettura e aggiornamento di dettami, metodi chiave, unione, comprens…
Leggi l'articolo →Intelligenza artificialeCos'è il RAG? La generazione aumentata di recupero spiegata con un esempio funzionante
Cos'è il RAG? La generazione aumentata di recupero viene spiegata passo dopo passo: indicizzazione, suddivisione in blocchi, incorporamenti, recuper…
Leggi l'articolo →DevOpsTutorial Terraform per principianti: infrastruttura come codice dal primo file ai moduli
Un tutorial su Terraform per principianti: inizia senza account cloud, impara init, pianifica e applica, quindi variabili, output, stato, moduli e u…
Leggi l'articolo →DevOpsDocker vs Kubernetes: differenze chiave, come funzionano insieme e di cosa hai bisogno
Spiegazione di Docker vs Kubernetes: cosa fa ciascuno, la stessa app viene eseguita con entrambi, Docker Compose e Swarm a confronto, il dockershim …
Leggi l'articolo →Automazione dei testTutorial Pytest per principianti: infissi, parametrizzazione ed esempi reali
Un tutorial pytest per principianti con test che abbiamo eseguito su pytest 9.2: asserzioni, dispositivi, parametrizzazione, conftest, marcatori, tm…
Leggi l'articolo →Test del softwareCiclo di vita del test del software (STLC): 6 fasi, criteri di ingresso e uscita, esempio
Spiegazione del ciclo di vita del test del software: sei fasi STLC con criteri di ingresso e uscita, risultati finali, un esempio di funzionalità di…
Leggi l'articolo →Sviluppo softwareGit merge vs rebase: differenze, esempi e quando usare ciascuno
Git merge vs rebase spiegato con output reale del log, una tabella di confronto, la regola d'oro del rebase e un flusso di lavoro sicuro per i team.
Leggi l'articolo →Sviluppo softwareList comprehension in Python: sintassi, esempi e quando evitarla
List comprehension in Python spiegata: sintassi, filtri, if-else, cicli annidati, tempi misurati e i casi in cui un normale ciclo for è meglio.
Leggi l'articolo →Database e SQLSQL JOIN spiegati con esempi (Inner, Left, Right, Full)
Capisci i JOIN SQL passo dopo passo con tabelle e query di esempio: INNER, LEFT, RIGHT, FULL, CROSS e SELF, con errori comuni e consigli sulle prest…
Leggi l'articolo →