Dag Blog - we love

Dag Blog

Come visualizzare il git branch nel prompt del terminale.

git branch

Se usate il terminale per gestire i vostri progetti e soprattutto usate git come vostro version control system, può essere molto comodo avere in ogni momento sotto controllo in quale branch si sta lavorando.

Con i sistemi operativi GNU/Linux (in particolare in questo esempio si sta utilizzando ubuntu 22.04), solitamente il prompt dei comandi del terminale mostra l'utente e la directory in cui si sta lavorando in quel momento.

default terminal prompt

Per rendere più facile la gestione del progetto, è possibile far comparire direttamente nel prompt del terminale il branch in cui si sta lavorando. In questo modo si evita di interrogare il sistema con il comando git branch che restituisce il branch corrente.

Ciò è possibile modificando alcuni parametri contenuti nel file ~/.bashrc. Questo file contiene le impostazioni essenziali per l'utilizzo e la personalizzazione della shell per ciascun utente. Spesso queste configurazioni sono contenute anche in altri files: per esempio se si usa zsh il corrispettivo file sarà ~/.zshrc.

Configurazione

Ecco cosa fare per aggiungere il branch al prompt dei comandi. Aprendo il file di configurazione ~/.bashrc cerchiamo nel file la sezione che contiene queste righe di codice.

...

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
...

Modifichiamo queste righe per far comparire il branch. Andiamo ad aggiungere in primo luogo, una funzione che permette di ricavare il branch dal comando git.

parse_git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

Dopodichè sostituiamo le righe esistenti con i nuovi valori indicati di seguito (quello commentato è il valore vecchio da sostituire).

if[ "$color_prompt" = yes ]; then
    # PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
    # PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi

Il risultato finale è quindi questo:

parse_git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if[ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt

Ora salviamo il file, e applichiamo i cambiamenti ricaricando il file di configurazione (o eseguiendo un nuovo accesso alla shell).

source ~/.bashrc

Ora entrando in una directory che contiene un progetto che utilizza il version control git, l'attuale branch compare nel prompt dei comandi.

new prompt

Possiamo provare a cambiare branch per vedere il come cambia il prompt.

Bel Colpo!