Confronto

Git GUI: client grafici per Git — TortoiseGit, GitKraken, VS Code e altri

Aggiornato: · Skillaria.Top

Git GUI è un client grafico che mostra cronologia, rami e modifiche in una finestra invece che nel terminale. Le opzioni più diffuse sono l'integrazione Git di VS Code e degli IDE JetBrains, GitHub Desktop per le attività semplici, TortoiseGit e Git Extensions per Windows, GitKraken e Sourcetree per lavorare visivamente con i rami; tutti funzionano sopra il normale Git.

Che cos'è Git GUI e se serve davvero

Git GUI è un'applicazione grafica per lavorare con Git: al posto dei comandi vedete l'elenco dei file modificati, l'albero dei commit e pulsanti come «Commit», «Push» e «Merge». Sotto il cofano, quasi ogni client Git esegue le stesse operazioni della riga di comando, e molti richiamano semplicemente il git installato nel sistema. Il GUI non è quindi un sistema di controllo versione separato, ma un altro modo di gestire lo stesso repository.

Un client grafico è particolarmente utile per tre compiti: visualizzare cronologia e rami sotto forma di grafo, aggiungere in staging solo una parte delle modifiche (selezionare con il mouse le singole righe per un commit è molto più semplice di git add -p) e risolvere i conflitti in un editor a tre pannelli. Per l'automazione, il lavoro sui server via SSH e la comprensione di ciò che succede davvero, invece, la riga di comando resta insostituibile.

La strategia che molti sviluppatori esperti adottano è conoscere la riga di comando e usare il GUI dove fa risparmiare tempo. Se siete principianti, imparate prima i comandi di base: così i pulsanti di qualsiasi applicazione saranno comprensibili e non misteriosi.

Git gui e gitk integrati

Pochi sanno che Git include già un programma grafico. Il comando git gui apre una semplice finestra Tcl/Tk per preparare i commit: visualizzazione dei diff, aggiunta di file e di singoli frammenti, creazione del commit e push. Il comando gitk mostra invece la cronologia come grafo.

git gui
gitk --all

In Git per Windows entrambi i programmi vengono installati insieme a Git Bash. Su Linux a volte bisogna installarli come pacchetto separato (per esempio git-gui e gitk su Debian e Ubuntu). L'interfaccia è essenziale, ma non serve scaricare nulla e funziona ovunque ci sia Git.

Git in VS Code

Se scrivete codice in Visual Studio Code, potrebbe non servire un programma separato. Il pannello Source Control (Ctrl+Shift+G) permette di aggiungere in staging singoli file e singole righe, fare commit, push e pull, passare da un ramo all'altro e crearne di nuovi, e mostra le modifiche direttamente nell'editor con segni colorati sul margine. I conflitti di fusione si aprono con i pulsanti «Accept Current», «Accept Incoming» e «Accept Both»; nelle versioni recenti è disponibile anche un editor di merge a tre pannelli.

VS Code usa il Git installato nel sistema, quindi prima installate Git: senza di esso il pannello mostra un avviso. Le funzioni di Git in VS Code si ampliano con le estensioni: GitLens aggiunge l'autore di ogni riga (blame), la cronologia dettagliata di un file e il confronto tra rami, mentre Git Graph disegna il grafo dei commit. Alcune funzioni di GitLens sono disponibili solo con abbonamento: verificate che cosa è incluso nella versione gratuita.

Allo stesso modo, gli IDE di JetBrains (IntelliJ IDEA, PyCharm, WebStorm e altri) includono un client Git ricco di funzioni, con grafo dei rami, rebase interattivo, shelve e una comoda risoluzione dei conflitti. Per molti sviluppatori è il client Git principale.

TortoiseGit

TortoiseGit è un client gratuito e open source, disponibile solo per Windows. Non si apre come applicazione autonoma, ma si integra in Esplora risorse: con il clic destro su una cartella compaiono nel menu contestuale Commit, Pull, Push, Show log e Diff. Sulle icone dei file vengono disegnati i simboli di stato: modificato, aggiunto, in conflitto.

TortoiseGit è particolarmente comodo per chi arriva da SVN e ha usato TortoiseSVN, e per chi non è sviluppatore — grafici, redattori tecnici, tester — e deve semplicemente recuperare e inviare file. Per funzionare richiede Git per Windows. Svantaggi: non è multipiattaforma e il grafo della cronologia è meno chiaro di quello dei client specializzati.

Git Extensions

Git Extensions è un altro client gratuito e open source per Windows. A differenza di TortoiseGit, è una finestra completa con grafo dei commit, pannelli per i diff ed elenco dei rami, oltre all'integrazione con Esplora risorse e Visual Studio. Mostra molte operazioni in modo abbastanza vicino ai comandi Git, include una console integrata e supporta i submodule.

Git Extensions si sceglie quando serve un client potente e gratuito per Windows, con un grafo completo, e non serve lavorare su macOS. L'interfaccia è ricca, quindi chi è alle prime armi avrà bisogno di un po' di tempo per abituarsi.

GitHub Desktop

GitHub Desktop è un'applicazione gratuita e open source per Windows e macOS. Punta sulla semplicità: elenco delle modifiche, campo per il messaggio di commit, pulsante di sincronizzazione, selettore dei rami. È integrato a fondo con GitHub — clonare i propri repository con un clic, creare una pull request, accedere con il proprio account — ma funziona anche con qualsiasi altro repository remoto.

GitHub Desktop è un buon primo client per un principiante e una scelta valida per progetti semplici. Le operazioni complesse (rebase interattivo, lavoro con reflog, regolazioni fini delle fusioni) sono limitate o assenti, quindi per quelle servirà il terminale.

GitKraken

GitKraken è un client commerciale multipiattaforma (Windows, macOS, Linux) con uno dei grafi dei commit più chiari. Trascinando un ramo su un altro si può eseguire un merge o un rebase, c'è un editor di conflitti integrato, il supporto a Git Flow, le integrazioni con i principali hosting Git e i tracker delle attività, e l'annullamento dell'ultima operazione con il pulsante Undo.

Esiste una versione gratuita con limitazioni e abbonamenti a pagamento; le funzioni incluse in ciascun piano cambiano, quindi prima di scegliere verificate sul sito ufficiale, per esempio, la possibilità di lavorare con repository privati. GitKraken è apprezzato per la visualizzazione di cronologie complesse; gli svantaggi sono il consumo di risorse e il modello a pagamento per l'uso commerciale.

Sourcetree, Fork, Sublime Merge e client da terminale

Sourcetree di Atlassian è un client gratuito per Windows e macOS con grafo della cronologia, supporto a Git Flow, rebase interattivo e stash. Si integra bene con Bitbucket. Per l'installazione può essere necessario un account Atlassian.

Fork è un client commerciale veloce e pulito per Windows e macOS, con un comodo rebase interattivo e una buona gestione dei conflitti; le condizioni d'uso sono indicate sul sito del produttore.

Sublime Merge, realizzato dagli autori di Sublime Text, è un client molto rapido per Windows, macOS e Linux, vicino per logica alla riga di comando: è facile vedere quale comando Git esegue un pulsante. È distribuito con licenza commerciale, con possibilità di uso di prova.

lazygit e tig sono client per il terminale con interfaccia testuale. lazygit permette di aggiungere in staging singole righe, fare rebase e risolvere i conflitti con i tasti, mentre tig è comodo per sfogliare la cronologia. È la scelta di chi vive nel terminale e lavora sui server via SSH.

Tabella comparativa dei client Git

ClientPiattaformeModello di distribuzionePunto di forzaPer chi è adatto
git gui + gitkWindows, macOS, LinuxGratuito, incluso in GitNulla da installareUna rapida occhiata a commit e cronologia
VS CodeWindows, macOS, LinuxGratuitoGit direttamente nell'editorSviluppatori che lavorano con VS Code
IDE JetBrainsWindows, macOS, LinuxDipende dall'IDEStrumenti potenti per rebase e conflittiUtenti degli IDE JetBrains
TortoiseGitWindowsGratuito, open sourceIntegrazione in Esplora risorseEx utenti di SVN, non sviluppatori
Git ExtensionsWindowsGratuito, open sourceGrafo completo e molte funzioniUtenti Windows esperti
GitHub DesktopWindows, macOSGratuito, open sourceSemplicità, integrazione con GitHubPrincipianti, progetti semplici
GitKrakenWindows, macOS, LinuxCommerciale, con versione gratuitaGrafo chiaro, drag-and-dropTeam con cronologie complesse
SourcetreeWindows, macOSGratuitoGit Flow, integrazione con BitbucketUtenti dell'ecosistema Atlassian
Sublime MergeWindows, macOS, LinuxCommercialeVelocità, trasparenza dei comandiChi apprezza la velocità
lazygitWindows, macOS, LinuxGratuito, open sourceLavoro nel terminaleAmanti del terminale e di SSH

Come scegliere il programma per Git

  • Lavorate già con VS Code o con un IDE JetBrains — iniziate dal Git integrato. Un'applicazione separata serve solo se vi manca qualcosa.
  • Vi serve la massima semplicità — GitHub Desktop.
  • Usate Windows e siete abituati a Esplora risorse — TortoiseGit; se vi serve un grafo completo — Git Extensions.
  • Cronologia complessa con molti rami, team su sistemi operativi diversi — GitKraken, Sublime Merge o Fork; verificate le condizioni di licenza per l'uso commerciale.
  • Vivete nel terminale — lazygit o tig.

Molti client si possono installare contemporaneamente: lavorano sullo stesso repository senza interferire, perché tutte le informazioni sono nella cartella .git. Provate due o tre opzioni su un progetto reale e tenete quella con cui trovate più in fretta ciò che cercate.

Insidie dei client grafici

  • Versioni diverse di Git. Alcune applicazioni includono un Git proprio, la cui versione può differire da quella di sistema. Se il comportamento nel GUI e nel terminale non coincide, controllate nelle impostazioni del client quale Git sta usando.
  • Operazioni nascoste. Il pulsante «Sync» può significare pull con merge o rebase seguito da push. Scoprite che cosa fa esattamente prima di premerlo su un ramo importante.
  • Force push con un clic. Nel GUI è facile riscrivere la cronologia di un ramo remoto. Preferite l'opzione con controllo (l'equivalente di git push --force-with-lease) e proteggete i rami principali sul server.
  • Nome ed email. I client li prendono dalla configurazione di Git. Verificate git config --global user.name e user.email, altrimenti i commit fatti dal GUI risulteranno firmati con l'autore sbagliato.
  • Autenticazione. Il GUI spesso conserva i token separatamente dal Git di sistema. Se il push funziona nel terminale ma non nell'applicazione (o viceversa), il problema è quasi sempre nelle credenziali.

Come far lavorare insieme GUI e riga di comando

La competenza più utile è poter verificare nel terminale ciò che ha fatto il client. Dopo un'operazione poco chiara nell'applicazione, eseguite git status e git log --oneline --graph --all -n 20: vedrete lo stato reale dei rami senza interpretazioni dell'interfaccia. Se qualcosa è andato storto, git reflog mostra dove si trovava HEAD prima del clic e permette di tornare indietro con git reset o git switch.

Molti client mostrano il registro dei comandi Git eseguiti: attivatelo, è il modo migliore per imparare i comandi senza rinunciare a un'interfaccia comoda.

Git GUI semplifica la lettura della cronologia, i commit parziali e la risoluzione dei conflitti, ma non sostituisce la comprensione dei comandi. Per la maggior parte degli sviluppatori basta il Git integrato in VS Code o nell'IDE; i principianti troveranno comodo GitHub Desktop, gli utenti Windows TortoiseGit o Git Extensions, e per lavorare visivamente con cronologie complesse GitKraken, Sourcetree o Sublime Merge. Installazione di Git, configurazione e uso comodo del terminale li analizziamo in pratica nel corso di Git.

Domande frequenti

Si può lavorare con Git solo tramite un client grafico?

Per le attività quotidiane sì, ma prima o poi si incontra una situazione più semplice da risolvere con un comando, per esempio un ripristino tramite reflog. I comandi di base conviene conoscerli comunque.

Bisogna installare Git separatamente se si usa un client grafico?

Per VS Code, TortoiseGit e Git Extensions serve Git installato. Alcune applicazioni, come GitHub Desktop, includono un proprio Git, ma quello di sistema torna utile per il terminale.

Quale client Git esiste per Linux?

Su Linux funzionano git gui e gitk, VS Code, gli IDE JetBrains, GitKraken, Sublime Merge e i client da terminale lazygit e tig.

È sicuro aprire lo stesso repository in più client?

Sì, tutti i client lavorano con la stessa cartella .git. Evitate solo di eseguire operazioni contemporaneamente, altrimenti uno dei client segnalerà un errore sull'index.lock bloccato.

Impara l’argomento in video

Questo argomento è trattato in modo approfondito, con pratica, nel corso «Git da zero a sviluppatore sicuro».

Vai al corso