akkaz / scuola

Il tuo sito
ha una storia.

Puoi cambiare idea. Puoi sbagliare. Con Git impari a conservare il lavoro buono e capire che cosa è cambiato.

3G · 22 ottobre · 2 ore

Il sito cambia. La sua storia resta.

10 minuti · partiamo da una situazione vera

Hai una pagina che funziona. Incolli una risposta di Gemini e sparisce il titolo. Ieri avevi una versione buona… ma quale file era?

Git registra le versioni del tuo progetto. Puoi vedere cosa cambia e recuperare un punto che avevi salvato. Ogni versione registrata si chiama commit e ha un messaggio che spiega il cambiamento.

Pagina inizialeTitolo, luogo e programma.
Aggiorna l’orarioIl laboratorio inizia alle 15.
Aggiungi il piano pioggiaIndica la sala coperta.

Questi sono tre commit, nello stesso progetto. Non tre cartelle chiamate “finale”, “finale2” e “finale-vero”.

Repository
La cartella del progetto con la sua storia Git, conservata nella sottocartella nascosta .git.
Diff
Il confronto tra due versioni: le righe aggiunte, tolte o cambiate.
Stage
La selezione delle modifiche che vuoi includere nel prossimo commit.
GitHub
Un servizio online dove puoi condividere repository. Git funziona anche sul tuo PC, senza GitHub.

Ctrl+S e commit sono due cose diverse: Ctrl+S salva il file su disco; il commit registra una versione nella storia. Un commit locale non pubblica il sito e non invia il lavoro al compagno. La copia sullo stesso PC non protegge dalla perdita del PC.

Hai premuto Ctrl+S. Hai già creato un commit?

Apri il piccolo sito della Pro Loco

20 minuti · cartella, VS Code e Git

Ci esercitiamo sulla Pro Loco del Borgo delle Castagne e sull’evento Una domenica in piazza. Organizzazione, evento, luoghi e dettagli sono tutti inventati per questa lezione.

  1. Estrai lo ZIP: su Windows, tasto destro → Estrai tutto. Non lavorare dentro lo ZIP.
  2. In VS Code scegli File → Apri cartella e apri proloco-partenza, quella che contiene index.html e style.css.
  3. Dal gestore file apri index.html nel browser. Vedrai il programma: il laboratorio inizia alle 14:00.
  4. In VS Code apri Terminale → Nuovo terminale. Il terminale è la zona dove scrivi comandi, non codice HTML. Digita questo e premi Invio:
git --version

Deve apparire un numero di versione, per esempio git version 2.….

Compare “git non è riconosciuto” o “command not found”

Git non è disponibile nel terminale. Usa il download ufficiale di Git per il tuo sistema; su Windows l’installer propone Git for Windows. Dopo l’installazione chiudi e riapri VS Code e riprova git --version.

Se il PC chiede credenziali di amministratore, chiama il docente. Intanto puoi leggere gli esempi e seguire sul PC di un compagno: alterna chi esegue e chi spiega. Non è necessario creare un account GitHub.

Controlla che il terminale sia nella cartella proloco-partenza. Poi esegui questo comando una sola volta:

git init

Ora questa cartella è un repository. Configura un autore di esercitazione, solo per questo progetto. Esegui le due righe:

git config --local user.name "Studente laboratorio"
git config --local user.email "studente@example.invalid"

È un’identità fittizia per il laboratorio locale, non un accesso a un account. Sul progetto vero configureremo l’autore corretto con il docente.

Vedo troppi file, oppure Git dice “not a git repository”

Apri la cartella estratta che contiene i due file del sito, non Download o Documenti. Poi apri un nuovo terminale. Non inizializzare tutto il PC. Se hai già creato un repository nella cartella sbagliata, fermati e fallo controllare al docente prima di cancellare qualsiasi cartella.

Registra la versione che funziona

15 minuti · il primo commit

Nel menu a sinistra di VS Code apri Controllo del codice sorgente / Source Control, oppure premi Ctrl + Maiusc + G.

  1. Nella lista Modifiche / Changes trovi index.html, style.css e LEGGIMI.txt. La lettera U significa che il file non è ancora tracciato da Git.
  2. Passa sul nome di ogni file e premi il + (Stage Changes): i file passano in Modifiche preparate / Staged Changes. Hai selezionato cosa registrare, ma non hai ancora fatto il commit.
  3. Nel campo del messaggio scrivi Pagina iniziale della Pro Loco.
  4. Premi Commit. Per questa lezione non serve “Pubblica branch” o “Sincronizza”.

Controlla: l’elenco delle modifiche è vuoto. Nel terminale puoi leggere la storia con:

git --no-pager log --oneline

Vedrai una riga con un codice breve e il messaggio che hai scritto. Il codice identifica quel commit: sul tuo PC sarà diverso da quello dei compagni.

Preferisci i comandi? Ecco gli stessi passaggi

Usa questi solo se non hai già fatto il commit dall’interfaccia:

git add index.html style.css LEGGIMI.txt
git commit -m "Pagina iniziale della Pro Loco"

add prepara quei file; commit registra la versione. Sono due azioni distinte.

Il commit non parte

Se Git dice Please tell me who you are, esegui i due comandi di configurazione nella sezione precedente. Se dice nothing to commit, controlla la storia: potresti aver già registrato tutto. Se ci sono file in Changes, premi il + prima del commit.

Cambia un’informazione. Guarda la differenza.

20 minuti · una modifica piccola e verificabile

La Pro Loco immaginaria ti comunica: «Il laboratorio delle lanterne inizierà alle 15:00, non alle 14:00.»

  1. Apri index.html. Con Ctrl + F cerca 14:00 e sostituiscilo con 15:00.
  2. Salva con Ctrl + S. Aggiorna la pagina nel browser e controlla il programma.
  3. Torna in Source Control: index.html ora ha la lettera M (Modified). Clicca sul nome per aprire il confronto.
  4. Leggi la riga rimossa e quella aggiunta. A finestra larga VS Code può mostrarle affiancate; a finestra stretta una sotto l’altra.
  5. Se è cambiato solo ciò che volevi, premi + su index.html e fai il commit Sposta il laboratorio alle 15.

Prima · riga rimossa

- <li><strong>14:00</strong> — Laboratorio delle lanterne</li>

Dopo · riga aggiunta

+ <li><strong>15:00</strong> — Laboratorio delle lanterne</li>

I segni − e + appartengono al confronto: non vanno incollati nel file HTML.

Prima di continuare: la storia deve avere due commit e la lista Changes deve essere vuota.

Quale messaggio ti aiuterà a ritrovare questa modifica tra un mese?

Gemini propone. Tu controlli.

15 minuti · una richiesta, una modifica, un controllo

Il sito è funzionante e hai già il secondo commit. Ora prova a chiedere un aiuto a Gemini. Puoi incollare il codice di questo sito fittizio.

Sto modificando una pagina HTML statica per un evento inventato.
Devo aggiungere una sezione con titolo "In caso di pioggia" e testo
"Le attività si svolgono nella Sala delle Castagne, accanto alla piazza."
Dammi soltanto il piccolo blocco HTML necessario e dimmi dove inserirlo
nel mio main. Spiegami i tag. Non riscrivere tutta la pagina,
non cambiare il programma e non aggiungere JavaScript.
Ecco il mio index.html:
  1. Aggiungi il tuo HTML sotto il prompt. Leggi la risposta e inserisci il blocco prima di </main>, senza copiare i delimitatori con i tre accenti gravi.
  2. Salva e prova nel browser: titolo e testo devono comparire. Il laboratorio deve essere ancora alle 15:00.
  3. Apri il diff: il menu, il programma e il resto del sito sono rimasti corretti? Sai indicare la nuova sezione?
  4. Quando il risultato è giusto, prepara index.html con il + e fai il commit Aggiunge le indicazioni per la pioggia.
Gemini non è disponibile, oppure la risposta è troppo complicata

Puoi inserire questo esempio direttamente prima di </main>. Poi fai gli stessi controlli.

<section id="pioggia">
  <h2>In caso di pioggia</h2>
  <p>Le attività si svolgono nella Sala delle Castagne,
     accanto alla piazza.</p>
</section>

Spiega al compagno: quale parte hai aggiunto e quale controllo ti ha convinto a tenerla? Git mostra le differenze; sei tu a verificare che il sito funzioni.

Rompi una cosa. Recuperala con Git.

15 minuti · un errore controllato nel sito di esercitazione

Prima controlla che Changes e Staged Changes siano vuoti. Le modifiche buone devono essere già nei commit. Questo esercizio recupera una modifica non ancora registrata.

  1. Apri style.css e aggiungi in fondo:
header { display: none; }
  1. Salva e aggiorna il browser. Il titolo dell’evento e il menu spariscono.
  2. Apri il diff di style.css. Devi vedere soltanto la regola appena aggiunta. Non premere + e non fare un commit di questo errore.
  3. In Source Control fai tasto destro su style.css → Ignora modifiche / Discard Changes. Leggi la conferma e accetta solo per questo file di esercitazione.
  4. Riapri il file e aggiorna il browser: titolo e menu tornano, il laboratorio resta alle 15:00 e il testo sulla pioggia resta presente.

Che cosa hai annullato? Tutte le modifiche non registrate di style.css, non solo l’ultima riga. Per questo prima abbiamo salvato le modifiche buone nei commit e controllato il diff.

Alternativa dal terminale e differenza rispetto a un errore già nel commit

Con il file non preparato e solo l’errore di esercitazione presente, questo comando riprende style.css dall’ultimo commit:

git restore --source=HEAD -- style.css

HEAD indica il commit attualmente selezionato. Il comando sovrascrive le modifiche non registrate di quel file. Se hai già fatto un commit dell’errore, fermati: questo recupero non lo annulla. Nella prossima lezione vedremo come correggere anche la storia già registrata.

Se hai premuto + per sbaglio ma non hai fatto il commit, premi il − accanto a style.css in Staged Changes per toglierlo dalla selezione. Poi ripeti il recupero.

Mostra al docente: i tre commit, il sito funzionante e la lista Changes vuota. Indica quale file hai recuperato e perché le modifiche all’HTML sono rimaste.

Come ci servirà nei gruppi

Oggi hai lavorato sulla storia locale. Per lavorare da PC diversi aggiungeremo un repository condiviso: clone per ottenerne una copia, pull per ricevere gli aggiornamenti e push per inviare i commit. Un branch permette di sviluppare una modifica su una linea separata; un merge unisce il lavoro.

Git può segnalare un conflitto quando le modifiche non si possono unire automaticamente: il gruppo deve decidere il risultato. Non risolve da solo due richieste incompatibili.

Per iniziare bene già oggi: una modifica alla volta, un messaggio comprensibile, controllo nel browser. Se lavorate in coppia, scambiate tastiera dopo ogni commit: entrambi devono saper fare i passaggi.

Adesso gioca: Oh My Git!

20 minuti · ritrova nel gioco quello che hai fatto

Le carte del gioco ti aiutano a vedere cosa fanno i comandi. Parti dall’introduzione: cerca il collegamento con file, modifiche e commit appena incontrati. Non devi completare tutto il gioco oggi.

È un gioco da scaricare per Windows, macOS o Linux, non si avvia dentro questa pagina. Scarica il pacchetto adatto al tuo PC ed estrailo; su Windows avvia l’eseguibile nella cartella estratta. Gli autori segnalano che i comandi su Windows possono essere lenti: attendi il risultato prima di ripetere la mossa.

Piccolo dizionario per le istruzioni del gioco
File / folder
File / cartella.
Changes
Modifiche ai file.
Stage / add
Prepara le modifiche da registrare.
Commit
Registra una versione nella storia.
Branch
Una linea di sviluppo del progetto.
Merge
Unisce due linee di sviluppo.

Prima di ogni carta: prova a dire cosa succederà. Dopo la mossa, confronta la previsione con il risultato. Se il gioco non parte, mostra il problema al docente e ripeti sul sito una piccola modifica con il suo commit.

Prima di chiudere il PC

5 minuti · fai vedere quello che sai

  • Mostra la storia con i tre messaggi dei commit.
  • Spiega la differenza tra Ctrl+S e commit.
  • Mostra una differenza nel codice e racconta come hai recuperato style.css.

Conserva tutta la cartella proloco-partenza, compresa la sottocartella nascosta .git. Se copi soltanto index.html e style.css, perdi la storia Git. Chiedi al docente dove conservare il progetto se devi spostarlo; oggi non c’è un invio automatico.

Fonti e guide per riprovare