1. Inizio: clonare il progetto
Iniziamo da dove ci siamo fermati nella lezione precedente. Hai un repository creato su GitHub e ora devi ottenere una copia locale sul tuo computer per iniziare a lavorare. Questo processo si chiama clonazione.
Passo 1. Avvia la tua IDE. Se hai un progetto aperto, chiudilo tramite File -> Close Project. Nella finestra iniziale scegli Clone Repository o Get from VCS.
Passo 2. Nella finestra che si apre incolla l'URL del tuo repository. Questo metodo è comodo se stai clonando il repository di qualcun altro. L'URL può essere copiato dalla pagina del repository su GitHub.
Se stai clonando il tuo repository (il nostro caso), il modo più semplice è effettuare il login al tuo account GitHub direttamente dall'IDE. Per farlo seleziona l'opzione Log in to GitHub. La tua IDE aprirà il browser per l'autenticazione.
Sulla pagina che si apre premi tranquillamente il pulsante verde Authorize JetBrains. Dopo potrai scegliere i tuoi repository direttamente dalla lista nell'IDE. Seleziona il progetto che ti interessa e clicca Clone.
Passo 3. La tua IDE ti chiederà se ti fidi di questo progetto. Siccome è il tuo repository, clicca Trust Project.
Passo 4. Configurazione dell'antivirus (per utenti Windows)
L'antivirus di Windows potrebbe avvisare che l'IDE sta cercando di eseguire azioni sconosciute. Dal momento che vogliamo creare ed eseguire programmi, dobbiamo permettere all'IDE di lavorare senza restrizioni. Clicca il pulsante «Automatically», così l'IDE aggiungerà automaticamente le cartelle necessarie alle esclusioni dell'antivirus.
2. Salvare le modifiche: Commit
commit — è un "istantanea", ovvero lo stato salvato del tuo progetto in un dato momento. Pensalo come un punto di salvataggio in un gioco: puoi sempre tornare lì se qualcosa va storto. Ogni commit ha un identificatore unico e un messaggio che descrive le modifiche apportate.
gitGraph
commit id: "Initial commit"
commit id: "Add user authentication"
commit id: "Fix login button bug"
commit id: "Refactor database connection"
Storia dei commit. Ogni nuovo commit si basa sul precedente, creando una cronologia dello sviluppo del progetto.
Passo 1. Apporta delle modifiche.
Se hai clonato un repository appena creato, conterrà solo un file — README.md
Apri il file README.md e aggiungi la descrizione del tuo progetto. Non appena inizi a modificare il file, l'IDE evidenzierà il suo nome in blu nel pannello del progetto. Questo significa che il file è stato modificato, ma le modifiche non sono ancora salvate in Git. L'IDE aggiungerà una linea verde dove hai apportato le modifiche.
Passo 2. Apri la finestra Commit.
A sinistra nell'IDE c'è la scheda Commit. Aprendola vedrai tutte le modifiche pronte per essere salvate. Per il primo commit questa finestra richiede attenzione particolare.
Vediamo cosa stiamo guardando:
- Changes: qui ci sono i file già tracciati da Git che sono stati modificati. Nel nostro caso è
README.md, a cui abbiamo aggiunto il piano del progetto. - Unversioned Files: sono i file nuovi che Git vede nella cartella del progetto ma che non sono ancora tracciati.
Potresti chiederti: devo aggiungere tutti questi file di servizio al repository?
La buona notizia è che quando abbiamo creato il repository su GitHub abbiamo scelto il template .gitignore. Questo file contiene già regole che dicono a Git di ignorare cartelle o file non necessari. Ne parleremo più dettagliatamente alla fine della lezione.
Per ora il nostro compito per il primo commit è aggiungere tutti i file principali del progetto alla storia e scrivere il messaggio del commit.
Passo 3. Esegui il commit.
Clicca il pulsante Commit. Fatto! Hai salvato l'istantanea del tuo progetto nel repository locale. Il file tornerà al suo colore normale.
3. Inviare le modifiche su GitHub: Push
I tuoi commit per ora risiedono solo sul tuo computer. Per condividerli con il team o conservarli in un posto sicuro devi inviarli al repository remoto su GitHub.
sequenceDiagram
participant Repository locale (Il tuo computer)
participant Repository remoto (GitHub)
note over Repository locale (Il tuo computer): Hai fatto uno o più commit.
Esistono solo qui.
Repository locale (Il tuo computer) ->> Repository remoto (GitHub): git push (inviare i commit)
note over Repository remoto (GitHub): I tuoi commit vengono copiati
e salvati in modo sicuro sul server.
Passo 1. Clicca il pulsante Push.
In alto a destra nell'IDE c'è una freccia verde verso l'alto — è il pulsante Push. Cliccala.
Passo 2. Controlla e conferma.
Si aprirà una finestra dove vedrai tutti i commit pronti per essere inviati. È la tua ultima occasione per assicurarti che stai inviando solo ciò che serve. Premi Push.
Se tutto è andato a buon fine vedrai i messaggi: Pushed commits to origin/main. Create pull request
Passo 3. Verifica su GitHub.
Dopo l'invio con successo apri la pagina del tuo repository su GitHub. Vedrai che le tue modifiche sono apparse lì.
4. Pannello di controllo Git
Nella tua IDE c'è un menu speciale Git, che puoi trovare nella barra superiore. È il tuo centro di controllo delle versioni. Facciamo una rapida panoramica delle voci principali.
Commit: apre la finestra che già conosci per salvare le modifiche.Push: apre la finestra per inviare i tuoi commit su GitHub.Update Project: funzione molto importante. Scarica le modifiche più recenti fatte dagli altri membri del team (eseguegit pull). Usala ogni mattina prima di iniziare a lavorare!Branches: apre la finestra per gestire i branch. Ne parleremo dettagliatamente nella prossima lezione.Show Git Log: mostra tutta la storia dei commit del tuo progetto. La tua macchina del tempo personale.
5. Uso dei file .gitignore
Se hai aggiunto nel progetto dei file di servizio e non vuoi che finiscano per sbaglio nel repository, puoi aggiungerli alle esclusioni. Per questo c'è il file chiamato .gitignore. È molto comodo quando nel progetto ci sono file che non dovrebbero essere tenuti nel sistema di controllo versione (per esempio file temporanei, log, password).
Passo 1. Per prima cosa crea il file nella cartella del progetto che vuoi ignorare. Per esempio, notes.txt. Dopo aver creato il file premi Cancel se l'IDE ti propone di aggiungerlo a Git.
Passo 2. Fai clic destro sul file creato nella finestra "Project". Vai su Git --> Add to .gitignore --> Add to .gitignore. Questa opzione aggiunge il file selezionato al file .gitignore nella radice del tuo progetto.
Se non avevi ancora un file .gitignore, l'IDE proporrà di crearlo. Accetta.
Passo 3. La tua IDE aggiungerà automaticamente il nome del file in .gitignore.
Dopo l'aggiunta a .gitignore i file ignorati saranno mostrati in grigio o marrone. Quando tenterai di fare il commit queste voci saranno ignorate. La cartella .idea può essere aggiunta alle esclusioni.
Non dimenticare di committare il file .gitignore stesso nel repository e di inviare le modifiche su GitHub, così tutti i membri del progetto useranno le stesse regole di ignoramento dei file.
Escludere file locali: .git/info/exclude
Oltre al file .gitignore, che viene usato per escludere file per tutti gli utenti del progetto, Git offre la possibilità di creare regole di ignoramento locali nel file .git/info/exclude. Queste non verranno committate nel repository e funzioneranno solo per la tua copia locale del progetto.
Questo può essere utile, per esempio, per ignorare file generati dalla tua IDE che non dovrebbero finire nel controllo versione ma che sono specifici solo per te.
Importante! Le regole di ignoramento locali valgono solo per la tua copia locale del repository.
E se ho già committato?
.gitignore ignora solo i file nuovi, non ancora tracciati. Se hai già committato un file, esso è nella storia del repository e Git continuerà a tracciarlo anche se lo aggiungi a .gitignore. Per questi casi c'è il comando da terminale: git rm --cached <file>. Ma su questo dovremo leggere separatamente.
Regole per .gitignore
Nel file .gitignore si indicano pattern di nomi di file e cartelle che Git deve ignorare.
Le righe vuote vengono ignorate. Per aggiungere un commento inizia la riga con il simbolo #.
Pattern:
*— sostituisce una quantità qualsiasi di caratteri. Per esempio,*.logignora tutti i file con estensione.log./— alla fine di un pattern indica una directory. Per esempio,logs/ignora tutto il contenuto della cartellalogs.!— all'inizio della riga inverte la regola. Per esempio, se hai la regola*.log, ma vuoi tracciareimportant.log, aggiungi la riga!important.log.**— corrisponde a qualsiasi numero di cartelle annidate. Per esempio,**/tempignora le cartelletempa qualsiasi livello di profondità.
Esempio di file .gitignore
# Codice compilato
/bin/
/obj/
# File temporanei
*.tmp
*.swp
# Log
*.log
# Cartelle create dalle IDE
.idea/
*.user
*.suo
# Ambienti virtuali e dipendenze
/venv/
/node_modules/
Template pronti
Non è necessario scrivere questi file da zero. Esistono template già pronti e verificati dalla community:
- La collezione di
.gitignoredi GitHub per diversi linguaggi e framework: https://github.com/github/gitignore. - gitignore.io — un comodo servizio web che genera il file
.gitignorein base alle tue tecnologie.
GO TO FULL VERSION