Strumenti avanzati: rebase, stash, cherry-pick e tag
Passiamo agli strumenti che distinguono un utente sicuro di Git da chi conosce solo le basi. Analizzeremo rebase come alternativa a merge, mostrando quando rende la cronologia più pulita e quando la trasforma in un incubo. Aggiungeremo stash per 'mettere da parte' rapidamente il lavoro non finito, cherry-pick per il trasferimento selettivo di commit e tag per marcare le versioni di rilascio.
- Sarai in grado di usare git stash per passare da un'attività all'altra senza perdere le modifiche.
- Capirai la differenza tra rebase e merge e saprai scegliere consapevolmente tra i due in base al contesto.
- Imparerai a modificare la cronologia dei commit con rebase interattivo e a marcare le versioni di rilascio con i tag.
Phần đầu bài giảng
Problema: come rimandare il lavoro incompiuto
- Un bug fix improvviso interrompe il tuo lavoro
- Il codice incompleto non può essere committato
- Git stash — archivio temporaneo delle modifiche
- Salva sia i file tracciati che quelli non tracciati
- Riporta la directory di lavoro a uno stato pulito
Immagina: sei nel bel mezzo del lavoro su una nuova funzionalità, e all'improvviso arriva un bug fix urgente. Non vuoi mollare tutto a metà, ma non puoi nemmeno committare codice grezzo. È proprio per situazioni come queste che esiste git stash — il tuo scaffale digitale temporaneo. È come mettere in pausa un gioco: il progresso corrente viene salvato e tu puoi dedicarti ad altro. Quando torni, tutto sarà esattamente come lo hai lasciato, inclusi i file non tracciati, se non hai dimenticato il flag -u. Questo ti salva dal dover tenere a mente più attività contemporaneamente.
Salviamo e visualizziamo le modifiche
- git stash save — salva le modifiche nell'archivio
- git stash list — mostra l'elenco delle modifiche salvate
- A ogni stash viene assegnato un ID univoco
- stash@{0} — l'ultima modifica salvata
- L'archivio conserva lo stato della directory di lavoro
Vediamo come usare git stash nella pratica. Il comando git stash save salva tutte le modifiche nella directory di lavoro e i file indicizzati, riportandoti a uno stato pulito. I tuoi progressi non sono persi — finiscono in un archivio speciale. Per assicurarti che le modifiche siano salvate, esegui git stash list. Vedrai un elenco di tutte le attività rimandate con identificatori univoci come stash chiocciola zero. È particolarmente comodo quando devi passare rapidamente da un'attività all'altra senza perdere i progressi.
# Salviamo le modifiche correnti
git stash save "WIP: Nuova funzionalità login"
# Controlliamo l'elenco delle modifiche salvate
git stash list
# Visualizziamo il contenuto dell'ultimo stash
git stash show -p
Ripristiniamo le modifiche rimandate
- git stash pop — applica e rimuove l'ultimo stash
- git stash apply — applica senza rimuovere
- Possibili conflitti se il codice è cambiato
- I conflitti si risolvono manualmente
- stash@{n} — riferimento a un salvataggio specifico
Quando è il momento di tornare al lavoro rimandato, hai due opzioni. Il comando git stash pop applica le ultime modifiche salvate e le rimuove dall'elenco stash. Se invece vuoi solo vedere le modifiche o applicarle più volte, usa git stash apply — le modifiche rimangono nell'archivio. È importante ricordare: se dal momento del salvataggio dello stash il codice è cambiato, potrebbero sorgere conflitti. In tal caso, Git ti avviserà del problema e dovrai risolvere i conflitti manualmente.
# Ripristiniamo le ultime modifiche rimandate
git stash pop
# OPPURE applichiamo senza rimuovere
git stash apply
# Applichiamo uno stash specifico per indice
git stash apply stash@{1}
Bài giảng đầy đủ dành cho thuê bao
Còn 25 slide nữa trong phiên bản đầy đủ.
Video, toàn bộ slide, ghi chú, bài kiểm tra, gia sư AI và phỏng vấn sẽ mở sau khi đăng nhập và đăng ký thuê bao.
Đăng nhập hoặc đăng ký Đăng ký thuê baoNội dung bài giảng
- Problema: come rimandare il lavoro incompiuto
- Salviamo e visualizziamo le modifiche
- Ripristiniamo le modifiche rimandate
- Quando stash può essere dannoso
- Come funziona l'unione dei branch
- Rebase: riscriviamo la cronologia dei commit
- Quando usare cosa: scenari pratici
- Pericoli del rebase: cosa può andare storto
- Cos'è il rebase e a cosa serve
- Eseguiamo il rebase: analisi passo dopo passo
- Risolviamo i conflitti durante il rebase
- Rebase interattivo: il vostro editor della cronologia dei commit
- Comandi principali del rebase interattivo
- Esercizio: rendiamo la cronologia perfetta
- Attenzione: modifica della cronologia pubblicata
- Perché non fare rebase sui rami condivisi
- Come rimediare a un rebase fallito
- Correggere la cronologia in sicurezza
- A cosa serve cherry-pick in Git
- Come usare git cherry-pick
- Quando scegliere: cherry-pick vs merge vs rebase
- Git tag: segnalibri per commit importanti
- Creare tag annotati e leggeri
- Pubblicare i tag nel repository remoto
- Scenario: hotfix a metà dello sviluppo
- Integrazione delle modifiche con rebase e cherry-pick
- Errori tipici e come evitarli
- Riepilogo: Il vostro nuovo arsenale da Git master
Bài viết liên quan đến bài học này
- git rebase: cách hoạt động, chế độ tương tác và gộp commit
- Lệnh Git: bảng tra cứu với ví dụ dùng hằng ngày
- Git merge và rebase: nên chọn cái nào cho nhóm
- git stash: cách cất tạm thay đổi và lấy lại
- Câu hỏi về Git khi phỏng vấn: 25 câu hỏi và đáp án
Tất cả bài giảng của khóa học
- Introduzione: Git da zero a sviluppatore fiducioso
- Perché serve Git — e perché senza non ti assumono
- Installazione e configurazione: prepariamo Git al primo avvio
- Primo repository: init, add, commit e la magia dell'indice
- Leggiamo la storia: log, diff, show e navigazione nel passato
- Branch: la realtà parallela del tuo codice
- Annullare gli errori: restore, reset, revert — correttamente e con cautela
- GitHub e repository remoti: il tuo codice nel cloud
- Lavoro di squadra: fork, feature branch e pull request
- Conflitti di unione: niente panico — analizziamo e risolviamo
- Processi Git nei team reali: quale workflow scegliere
- Strumenti avanzati: rebase, stash, cherry-pick e tag
- Progetto finale: simuliamo uno sviluppo di gruppo reale