commandlinefu a 2 propositions intéressantes:
for k in `git branch | perl -pe s/^..//`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`\\t$k; done | sort -r
ou:
for k in `git branch | sed s/^..//`; do echo -e `git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k --`\\t"$k";done | sort
C'est pour les branches locales, dans une syntaxe Unix. En utilisant git branch -r
, vous pouvez afficher de la même manière les branches distantes:
for k in `git branch -r | perl -pe 's/^..(.*?)( ->.*)?$/\1/'`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`\\t$k; done | sort -r
Michael Forrest mentionne dans les commentaires que zsh nécessite des échappements pour l' sed
expression:
for k in git branch | perl -pe s\/\^\.\.\/\/; do echo -e git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1\\t$k; done | sort -r
kontinuity ajoute dans les commentaires :
Si vous voulez l'ajouter à votre zshrc, l'échappement suivant est nécessaire.
alias gbage='for k in `git branch -r | perl -pe '\''s/^..(.*?)( ->.*)?$/\1/'\''`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`\\t$k; done | sort -r'
En plusieurs lignes:
alias gbage='for k in `git branch -r | \
perl -pe '\''s/^..(.*?)( ->.*)?$/\1/'\''`; \
do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | \
head -n 1`\\t$k; done | sort -r'
Remarque: la réponse de n8tr , basée sur est plus propre. Et plus vite .
Voir aussi " Option de nom uniquement pour ? "git for-each-ref refs/heads
git branch --list
Plus généralement, tripleee nous rappelle dans les commentaires :
- Préférez la
$(command substitution)
syntaxe moderne à la syntaxe de backtick obsolète.
(J'ai illustré ce point en 2014 avec " Quelle est la différence entre $(command)
et `command`
dans la programmation shell? ")
- Ne lisez pas les lignes avec
for
.
- Passer probablement à
git for-each-ref refs/remote
pour obtenir les noms de branche distante au format lisible par machine