#howto - Guida all'utilizzo di git, parte 11: GUI
← Articolo precedente, parte 10: bisect
Quando si parla di software di versioning, git
è sicuramente il primo programma che ci viene in mente. Rappresenta l’alternativa più diffusa a sistemi come svn
, utilizzata anche in ambito enterprise.
Rappresenta anche uno dei primi scogli che dipendenti alle prime armi affrontano in azienda.
Ecco quindi una guida passo passo a git, parte 11: GUI.
Obiettivi
Questo articolo affronterà i seguenti argomenti:
- GIT CLI vs GUI
- gitk
- Estensioni per Visual Studio Code
- Altri client noti
- GitHub e accesso SSH
- GitHub e .dev
git CLI vs GUI
Capire come funziona il client di git è importante, che lo usiate o meno.
Una conoscenza basilare di come funzionino le varie operazioni di git, della differenza tra worktree, staging, repository, eccetera è necessaria per comprendere le varie voci che si prensentano dei menu. Detto ciò, avere un interfaccia grafica ha diversi vantaggi anche nel mondo git.
Esistono ad esempio alcune operazioni che da git son ostiche da utilizzare o addirittura non possibili:
- La possibilità di ripristinare parti di file (e non il file intero)
- La gestione di un diff in generale è molto meno complessa da GUI
- L’aggiunta in staging area o il commit di molti file che non rappresentano la totalità delle modifiche ad esempio è abbastanza ostica se non esiste un pattern che possa identificare tutti i file
Ci sono altre operazioni difficili da fare tramite GUI o non presenti nei vari software, le più comuni sono:
- Squash
- Bisect
- Revert/Reset
- Update-index
Il miglior approccio è quindi avere una buona base di conoscenza sulla cli, ma utilizzare per le operazioni più comuni e tediose la gui.
gitk
Una delle gui più basilari è sicuramente gitk. Quest’interfaccia è scritta con la libreria tcl/tk e viene, in molti casi, preinstallato con git. Il suo funzionamento è molto semplice ma le funzionalità sono ridotte a poco più della semplice visualizzazione a grafo di commit e branch.
Installazione
Vediamo l’installazione, se necessaria, sistema per sistema.
Ubuntu
Su Ubuntu, gitk va installato in modo esplicito:
apt install gitk
Fedora
Su Fedora, gitk va installato in modo esplicito:
dnf install gitk
Arch Linux
Viene preinstallato con git, tuttavia potrebbe essere necessario installare tk
e tcl
:
pacman -S tk tcl
Windows
Il client git di Windows dovrebbe essere installato con gitk incluso.
MacOS
Da Mac bisogna utilizzare brew
per l’installazione:
brew install git
brew install git-gui
Uso
Da terminale, in una cartella di progetto git, scrivere:
gitk
Per vedere graficamente i commit di quel progetto.
Esistono varie opzioni utilizzabili, il comando non ha un help dedicato ma ha un man
:
man gitk
Per avere una lista di tutti i branch ad esempio utilizzare il comando all
:
gitk --all
Un altra opzione utile è --branches
che prende come valore una stringa (con eventuali caratteri jolly stile UNIX) per poter filtrare i branch da visualizzare. Ad esempio per avere tutti e soli i branches di “feature” scrivere:
gitk --branches='feature/*'
Come parametri gitk prende un nome di file, per cui si può filtrare sui soli commit che hanno modificato quel file.
Consigli subshell
Su terminale UNIX quello che succede è che il terminale si “blocca” in attesa che gitk sia terminato. Inoltre chiudendo il terminale verrà chiuso di conseguenza anche gitk.
Questo è un normale comportamento del sistema operativo, in quanto gitk risulta processo figlio del terminale e dipende da lui. Per evitare questo comportamento è possibile utilizzare una subshell:
(gitk --all >/dev/null 2>/dev/null &);
Tramite quest’istruzione il terminale sarà trattato come processo a sé stante da gitk e saranno indipendenti uno dall’altro.
Estensioni per Visual Studio Code
Visual Studio Code è forse uno degli editor di codice più estendibili che esista. Ad oggi probabilemente quasi più un IDE.
A parere personale, possiede il miglior wrapper grafico di git tra le varie alternative, con l’aggiunta di qualche estensione inoltre copre un gran numero di necessità.
Perosnalmente consiglio:
- GitLens, con id estensione: eamodio.gitlens, che rende visibile linea per linea l’autore (stile gitblame) dell’ultima modifica e inserisce una serie di pannelli nel lato inferiore della tab di git
- Git History, con id estensione: donjayamanne.githistory, che facilita alcune operazioni di confronto e ricerca nella history.
Altri client noti
Altri client che consiglio, poichè multiplatform, sono:
- SmartGit
- GitEye
- gitg
- Git Cola
Un altro client famoso, se pur a pagamento, è Gitkraken.
Git comunque provvede già a fornire una pagina con tutte le GUI migliori, raccolte anche per sistema operativo (compresi Android e iOS).
GitHub e accesso ssh
GitHub è uno dei repository git online più famosi che esista sicuramente, anche dopo l’acquisto da parte di Microsoft è rimasto un punto di riferimento nel mondo dell’open source (nonostante non sia open).
Per connettersi a GitHub esistono diversi modi, uno dei più efficaci è quello di usare le chiavi ssh. GitHub dispone di un ottima guida in merito.
Per riepilogare i passi più importanti, basta generare una nuova chiave:
ssh-keygen -t ed25519 -C "[email protected]"
Quindi aggiungerla al proprio agent ssh:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Generare ed usare più chiavi
Si possono generare più chiavi ed usarle in base al repository. Per farlo generare una nuova chiave:
ssh-keygen -t ed25519 -C "[email protected]"
Avere cura, quando il processo chiede il file in cui memorizzare la chiave, di specificare un nuovo nome file:
> Enter a file in which to save the key (/home/nomeutente/.ssh/id_ed25519): SPECIFICARE QUI UN NUOVO FILE
Quindi aprire il file /home/nomeutente/.ssh/config
e scrivere all’interno:
Host NomeAScelta
HostName .com
IdentityFile ~/.ssh/percorsosecondachiave
In fase di clone di un nuovo repository bisognerà ora specificare non più .com
come sito, ma NomeAScelta
:
git clone git@NomeAScelta:Nome/Repository
(Se il repository era già clonato o con un suo clone, cambiare con git remote set-url
).
GitHub e .dev
Una piccola curiosità che potrebbe far piacere a chi, fino a qua, ha letto l’articolo. GitHub fornisce un IDE online per i suoi repository. Per accedere basta premere il tasto .
quando si è su un repository, oppure sostituire .com
con .dev
nella barra degli indirizzi.