hice dos variantes, basado en la respuesta de VonC.
Mi primera variante:
for k in `git branch -a | sed -e s/^..// -e 's/(detached from .*)/HEAD/'`; do echo -e `git log -1 --pretty=format:"%Cgreen%ci |%Cblue%cr |%Creset$k |%s" $k --`;done | sort | column -t -s "|"
Este maneja locales & sucursales remotas (-a), se ocupa de Estado-cabeza separada (el comando ya sed, aunque la solución es una especie de crudo - que simplemente se cambia de información de rama separada con la palabra clave HEAD), agrega el asunto de confirmación (% s) y coloca las cosas en columnas a través de caracteres de tubería literales en la cadena de formato y pasando el resultado final al column -t -s "|"
. (Puede usar lo que sea como separador, siempre que sea algo que no espera en el resto de la salida).
Mi segunda variante es bastante hacky, pero realmente quería algo que todavía tenga un indicador de " esta es la rama en la que se encuentra actualmente "como lo hace el comando de rama.
CURRENT_BRANCH=0
for k in `git branch -a | sed -e 's/\*/CURRENT_BRANCH_MARKER/' -e 's/(detached from .*)/HEAD/'`
do
if [ "$k" == 'CURRENT_BRANCH_MARKER' ]; then
# Set flag, skip output
CURRENT_BRANCH=1
elif [ $CURRENT_BRANCH == 0 ]; then
echo -e `git log -1 --pretty=format:"%Cgreen%ci |%Cblue%cr |%Creset$k |%s" $k --`
else
echo -e `git log -1 --pretty=format:"%Cgreen%ci |%Cblue%cr |%Creset* %Cgreen$k%Creset |%s" $k --`
CURRENT_BRANCH=0
fi
done | sort | column -t -s "|"
Esto convierte el * que marca la rama actual en una palabra clave, y cuando el cuerpo del bucle ve la palabra clave en su lugar establece un indicador y salidas nada. El indicador se usa para indicar que se debe usar un formato alternativo para la siguiente línea. Como dije, totalmente hacky, ¡pero funciona! (En su mayoría. Por alguna razón mi última columna se está outdented en el ramal actual. Pero lo que realmente debería volver a hacer el trabajo real en lugar de ajustar esto más.)
duplicado posible de [¿Cómo puedo obtener una lista de las ramas git, ordenado por más reciente comprometerse?] (Http://stackoverflow.com/questions/5188320/how-can-i-get-a-list-of-git-branches-ordered-by-most-recent-commit) –
Las respuestas a: http://stackoverflow.com/questions/5188320/ ¿cómo-puedo-obtener-una-lista-de-git-ramas-ordenadas-por-la más reciente-confirmación son todas mejores que las respuestas aquí –