commandlinefu tiene 2 propuestas interesantes:
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
o:
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
Eso es para sucursales locales, en una sintaxis Unix. Utilizando git branch -r
, puede mostrar ramas remotas de manera similar:
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 menciona en los comentarios que zsh requiere escapes para la sed
expresión:
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 agrega en los comentarios :
Si desea agregarlo a su zshrc, se necesita el siguiente escape.
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 multiples lineas:
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'
Nota: la respuesta de n8tr , basada en es más limpia. Y mas rapido .
Consulte también " Opción de solo nombre para ? "git for-each-ref refs/heads
git branch --list
En términos más generales, tripleee nos recuerda en los comentarios :
- Prefiere la
$(command substitution)
sintaxis moderna a la sintaxis obsoleta de retroceso.
(Ilustraba ese punto en 2014 con " ¿Cuál es la diferencia entre $(command)
y `command`
en la programación de shell? ")
- No leas líneas con
for
.
- Probablemente cambie a
git for-each-ref refs/remote
para obtener nombres de sucursales remotas en formato legible por máquina