Git Bash: cos'è e come usarlo su Windows
Git Bash è un terminale per Windows che si installa insieme a Git for Windows e offre un ambiente Unix familiare: la shell bash, i comandi ls, cd, cat, grep, ssh e Git stesso. Serve a far funzionare su Windows i comandi Git e le istruzioni della documentazione esattamente come su Linux e macOS.
Cos'è Git Bash
Git Bash è un'applicazione per Windows che si installa insieme a Git for Windows e apre una finestra di terminale con la shell bash. Al suo interno funzionano Git e una serie di utility Unix standard: ls, cd, pwd, cat, grep, find, less, ssh, ssh-keygen, curl e altre.
Tecnicamente è un porting dell'ambiente MSYS2: i programmi sono compilati per Windows ma si comportano come su Linux. La finestra del terminale predefinita è l'emulatore MinTTY. Non è una macchina virtuale né un Linux completo: per quello esiste WSL. Git Bash è più leggero: si avvia all'istante e lavora direttamente con i file di Windows.
Nelle ricerche capita di vederlo scritto «git bush»: si tratta della stessa cosa. Bash sta per Bourne Again SHell e non ha nulla a che fare con i cespugli (bush).
A cosa serve Git Bash se ci sono cmd e PowerShell
Git funziona benissimo anche in PowerShell e nel normale prompt dei comandi. Ma Git Bash ha vantaggi pratici, soprattutto per chi inizia.
- Gli stessi comandi su tutti i sistemi. La documentazione di Git, le risposte nei forum, le guide di GitHub e i corsi scrivono i comandi per bash. In Git Bash funzionano senza adattamenti:
rm -rf build,cat ~/.ssh/id_ed25519.pub,export VAR=value. - Strumenti SSH già pronti.
ssh-keygen,ssh-agent,ssh-addsono già presenti: la chiave per GitHub si crea in un minuto. - Informazioni di Git nel prompt. Git Bash mostra il branch corrente direttamente nella riga di comando, ad esempio
(main), e durante un merge(main|MERGING). - Completamento automatico. Tab completa comandi Git, nomi di branch e file.
- Una competenza per il futuro. Server, container Docker e CI girano su Linux. Abituandovi a bash in Git Bash, su un server vi sentirete a casa.
Git Bash, Git CMD, PowerShell: le differenze
Dopo l'installazione di Git for Windows nel menu Start compaiono diverse voci, e questo confonde.
| Strumento | Cos'è | Quando usarlo |
|---|---|---|
| Git Bash | Shell bash con utility Unix e Git | Lavoro principale con Git, seguire le istruzioni trovate online |
| Git CMD | Il normale prompt dei comandi di Windows (cmd.exe) con Git nel PATH | Se siete abituati a cmd e vi servono solo i comandi git |
| Git GUI | Un semplice client grafico in Tcl/Tk | Comporre un commit in modo visivo, usato raramente |
| PowerShell / cmd | I terminali standard di Windows | Git funziona se in fase di installazione è stato scelto il PATH «from the command line and also from 3rd-party software» |
Git CMD non è un programma separato, ma un normale cmd con l'ambiente configurato. I comandi Git sono gli stessi, ma ls, cat e grep non funzionano: al loro posto ci sono dir, type e findstr. Chi cerca «cmd git» di solito vuole sapere proprio questo: come lanciare git dal prompt dei comandi standard. La risposta è che non serve nulla di speciale: basta eseguire git status, se Git è nel PATH.
Come aprire Git Bash
Dal menu Start
Digitate «Git Bash» e avviate l'applicazione. Il terminale si apre nella cartella home dell'utente: /c/Users/Nome, che in bash si indica con ~.
Nella cartella giusta dal menu contestuale
Il modo più comodo: in Esplora file fate clic destro su uno spazio vuoto dentro la cartella del progetto e scegliete «Open Git Bash here». In Windows 11 questa voce è nascosta in «Mostra altre opzioni» (oppure Maiusc + clic destro).
Nel terminale di VS Code
Aprite il terminale (Ctrl + `), fate clic sulla freccia accanto a «+» e scegliete Git Bash. Per aprirlo come predefinito, eseguite il comando «Terminal: Select Default Profile» e scegliete Git Bash.
In Windows Terminal
Git for Windows può aggiungere da solo il profilo Git Bash a Windows Terminal (opzione nella procedura di installazione). Se il profilo manca, createne uno nuovo con il comando C:\Program Files\Git\bin\bash.exe -i -l.
Percorsi e file: la differenza principale rispetto a Windows
In Git Bash i percorsi si scrivono in stile Unix. Il disco C: diventa /c e le barre rovesciate diventano barre normali.
| Windows | Git Bash |
|---|---|
C:\Users\Anna\projects | /c/Users/Anna/projects |
D:\work | /d/work |
%USERPROFILE% | ~ oppure $HOME |
Se il percorso contiene spazi, mettetelo tra virgolette: cd "/c/Users/Anna/My Projects". Per aprire la cartella corrente in Esplora file usate explorer ., in VS Code code ..
Comandi base di Git Bash per principianti
Navigazione e file
pwd # dove mi trovo
ls -la # elenco dei file, inclusi quelli nascosti (.git, .gitignore)
cd projects/site # entrare in una cartella
cd .. # salire di un livello
mkdir new-app # creare una cartella
touch index.html # creare un file vuoto
cat README.md # mostrare il contenuto
rm file.txt # eliminare un file
rm -r old-folder # eliminare una cartella con il contenuto
clear # pulire lo schermo
Il primo repository direttamente in Git Bash
$ mkdir my-first-repo && cd my-first-repo
$ git init
Initialized empty Git repository in C:/Users/Anna/my-first-repo/.git/
$ echo "Ciao, Git" > hello.txt
$ git add hello.txt
$ git commit -m "Aggiungi hello.txt"
$ git log --oneline
Dopo git init il prompt cambia: compare il nome del branch tra parentesi. È un modo rapido per capire che siete dentro un repository.
Trucchi utili
- Tab: completamento di comandi, branch e file. Premetelo due volte per vedere le opzioni.
- Freccia su: comando precedente;
history: tutta la cronologia; Ctrl + R: ricerca nella cronologia. - Copia/incolla: in MinTTY la selezione con il mouse copia subito, si incolla con Maiusc + Ins o con il tasto destro. Ctrl + C nel terminale interrompe il comando, non copia.
- q: esce dalla visualizzazione a pagine (
git logegit diffsi aprono inless). - Esc, poi :q! e Invio: esce da Vim, se si è aperto per il messaggio di commit.
Git CLI: perché vale la pena imparare la riga di comando
Git CLI è l'interfaccia a riga di comando di Git, cioè i comandi git ... stessi. I client grafici sono comodi per consultare la storia, ma hanno dei limiti: non tutte le operazioni sono disponibili e, in caso di errore, un pulsante non spiega cosa sta succedendo. La riga di comando offre pieno controllo e messaggi dettagliati.
Un altro argomento: a un colloquio o in un nuovo team vi chiederanno di mostrare come annullate un commit o risolvete un conflitto, e ognuno usa una GUI diversa. I comandi sono gli stessi ovunque. Una buona strategia è lavorare nella CLI e usare la GUI o gli strumenti integrati dell'IDE per guardare diff e storia.
Personalizzare Git Bash
Alias in ~/.bashrc
All'avvio Git Bash legge ~/.bash_profile e ~/.bashrc. Aggiungeteci delle abbreviazioni:
alias gs='git status'
alias gl='git log --oneline --graph --all'
alias ll='ls -la'
Per applicare le modifiche senza riavviare, eseguite source ~/.bashrc. Se all'avvio compare un avviso che è stato trovato .bashrc ma manca .bash_profile, Git Bash creerà .bash_profile da solo: è normale.
Alias di Git
Gli alias si possono salvare anche in Git, e allora funzionano in qualsiasi terminale:
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"
Ora git st e git lg funzionano sia in Git Bash sia in PowerShell.
Aspetto
Font, dimensione, colori e trasparenza si impostano con clic destro sulla barra del titolo → Options. Per i caratteri accentati, nella sezione Text verificate che sia selezionata la codifica UTF-8.
Problemi comuni in Git Bash
Caratteri illeggibili al posto delle lettere accentate in git log
Di solito aiuta impostare la codifica UTF-8 in Options → Text e aggiungere a ~/.bashrc la riga export LANG=it_IT.UTF-8. Per i nomi di file con caratteri non ASCII in git status eseguite git config --global core.quotepath false, altrimenti vengono mostrati come sequenze di escape del tipo \303\250.
I programmi interattivi si bloccano
Alcuni programmi da console (ad esempio l'interprete Python o node senza argomenti) in MinTTY si comportano in modo strano. Avviateli tramite winpty: winpty python, oppure usate Git Bash dentro Windows Terminal.
I percorsi diventano qualcosa di strano
MSYS converte automaticamente gli argomenti che sembrano percorsi Unix in percorsi Windows. A volte questo dà fastidio, ad esempio quando si passa /app a docker run. La soluzione è raddoppiare la barra (//app) o impostare MSYS_NO_PATHCONV=1 per il comando.
«Permission denied (publickey)» durante il push
La chiave SSH non è stata creata o non è stata aggiunta a GitHub. Create la chiave in Git Bash con ssh-keygen -t ed25519 -C "you@example.com", aggiungete il contenuto di ~/.ssh/id_ed25519.pub nelle impostazioni di GitHub e verificate con ssh -T git@github.com.
Git Bash o WSL
WSL è un vero Linux dentro Windows, con il proprio file system e i propri pacchetti. Serve se sviluppate per Linux: usate Docker, compilate, lavorate con uno stack server. Git Bash è più semplice e leggero e per lavorare con Git basta e avanza. L'importante è non mescolare: un repository clonato dentro WSL è meglio gestirlo con il Git di WSL, mentre un repository sul disco C: con Git for Windows.
In sintesi
Git Bash è un terminale con bash e utility Unix che arriva insieme a Git for Windows. Rende Windows compatibile con la documentazione e le istruzioni di Git, offre SSH pronto all'uso e mostra il branch nel prompt. Git CMD è lo stesso Git nel normale prompt dei comandi, senza comandi Unix. Per imparare e per il lavoro quotidiano su Windows scegliete Git Bash: nel corso su Git è il terminale principale delle esercitazioni pratiche.
Domande frequenti
Git Bash è gratuito?
Sì, Git Bash fa parte di Git for Windows ed è distribuito gratuitamente con licenza open source.
Si può installare Git Bash separatamente da Git?
No, Git Bash si installa solo insieme a Git for Windows. Se Git è già installato, trovate Git Bash nel menu Start.
Esiste Git Bash su macOS e Linux?
Non esiste un programma separato e non serve: su macOS e Linux il terminale integrato lavora già con bash o zsh e con le utility Unix.
Dove conserva Git Bash la cartella home e le impostazioni?
La cartella home è C:\Users\Nome, in bash accessibile come ~. Lì si trovano anche .bashrc, .bash_profile, .gitconfig e la cartella .ssh.
Si possono eseguire file bat ed exe in Git Bash?
Sì, i programmi Windows si avviano per nome o percorso, ad esempio ./build.bat o notepad file.txt.
Questo argomento è trattato in modo approfondito, con pratica, nel corso «Git da zero a sviluppatore sicuro».
Vai al corso