Listar as branches por commit mais recente. Útil para ter um overview sobre quais branches estão mais desatualizadas.
A ideia foi retirada da referência mais abaixo, mas a função está um pouco modificada visando melhorias.
Configurar o alias
Vamos faze por meio de um alias.
git config --edit --global
# ou se quiser editar no vscode
GIT_EDITOR='code --wait' git config --global --edit
Adicionar dentro da seção [alias]
o código da função recentb
, conforme abaixo
[alias]
# https://stackoverflow.com/questions/5188320/how-can-i-get-a-list-of-git-branches-ordered-by-most-recent-commit#5972362
# ATTENTION: All aliases prefixed with ! run in /bin/sh make sure you use sh syntax, not bash/zsh or whatever
recentb = "!r() { \
refbranch=$1; \
count=$2; \
refs=$3; \
defaultBranch=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'); \
git for-each-ref \
--sort=-committerdate \
${refs:-refs/remotes} \
--format='%(refname:short)|%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)' \
--color=always \
--count=${count:-200} \
| while read line; do \
branch=$(echo \"$line\" | awk 'BEGIN { FS = \"|\" }; { print $1 }' | tr -d '*'); \
ahead=$(git rev-list --count \"${refbranch:-origin/${defaultBranch}}..${branch}\"); \
behind=$(git rev-list --count \"${branch}..${refbranch:-origin/${defaultBranch}}\"); \
colorline=$(echo \"$line\" | sed 's/^[^|]*|//'); \
echo \"$ahead|$behind|$colorline\" | awk -F'|' -vOFS='|' '{$5=substr($5,1,70)}1' ; \
done \
| ( echo \"ahead|behind|branch|lastcommit|message|author\" && cat) \
| column -ts'|'; \
}; r"
Observar que a função/alias recentb
recebe alguns parâmetros.
Exemplos de uso
Sem uma branch de referência
Vai assumir que a branch de referência é a branch default, geralmente master
ou main
.
git recentb
Especificando uma branch de referência
git recentb origin/post-memoria-jvm-container-docker
Especificando a quantidade de branches e o refs
git recentb origin/master 10 refs/tags
Nesse exemplo, origin/master
é a branch de referência, vai trazer no máximo 10 referências e vai inspecionar refs/tags
(por padrão inspeciona refs/remotes
).