Basi

Git Bash: cos'è e come usarlo su Windows

Aggiornato: · Skillaria.Top

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-add sono 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.

StrumentoCos'èQuando usarlo
Git BashShell bash con utility Unix e GitLavoro principale con Git, seguire le istruzioni trovate online
Git CMDIl normale prompt dei comandi di Windows (cmd.exe) con Git nel PATHSe siete abituati a cmd e vi servono solo i comandi git
Git GUIUn semplice client grafico in Tcl/TkComporre un commit in modo visivo, usato raramente
PowerShell / cmdI terminali standard di WindowsGit 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.

WindowsGit 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 log e git diff si aprono in less).
  • 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.

Impara l’argomento in video

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

Vai al corso