Exibir no prompt, por meio do PS1, a quantidade de commits atrás e na frente em relação a branch origin/master.

No prompt, dentro de um repositório Git, teremos algo parecido com: [user@host folder] (Atras do origin/master por 1 commit e na frente por 2)$

Editar ~/.bashrc

Adicionar a função abaixo

_git_status_relation_to_origin_master() {
  if git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
    local STATUS="$(git rev-list --left-right --count origin/master..."$(git rev-parse --abbrev-ref HEAD)" \
      | sed -r 's#([[:digit:]]+)\s+([[:digit:]]+)#Atras do origin/master por \1 commit e na frente por \2#')"
    echo "(${STATUS})"
  fi
}

Chamar a função dentro do PS1

O PS1 no ~/.bashrc deve ficar algo como

export PS1='[\u@\h \W] $(_git_status_relation_to_origin_master)\[\e[0m\]\$ '

Efetivando a mudança

Recarregue o terminal ou execute apenas source ~/.bashrc.

Explicação do comando

  • O if checa se a pasta corrente é um repositório Git
  • O git rev-parse --abbrev-ref HEAD retorna a branch corrente
  • O sed formata para que tenhamos a frase informando a diferença