#howto - Guida all'utilizzo di git, parte 11: GUI

Scritto da il
Redatto da
bash
git

← 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.

history_edu Revisioni