ho fatto due varianti, in base alla risposta del VonC.
mia prima 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 "|"
Questo gestisce locali & rami remoti (-a), gestisce stato distaccato testa (il comando più sed, anche se la soluzione è tipo di greggio - solo sostituisce la informazioni sulla diramazione staccata con la parola chiave HEAD), aggiunge nell'oggetto di commit (% s) e inserisce le cose in colonne tramite caratteri letterali del pipe nella stringa di formato e passando il risultato finale a column -t -s "|"
. (Puoi usare qualsiasi cosa come separatore, purché sia qualcosa che non ti aspetti dal resto dell'output.)
La mia seconda variante è abbastanza hacky, ma volevo davvero qualcosa che avesse ancora un indicatore di " questo è il ramo su cui stai attualmente "come fa il comando del ramo.
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 "|"
Questo trasforma il * che segna il ramo corrente in una parola, e quando il corpo del ciclo vede la parola si stabilisce invece una bandiera e uscite nulla. Il flag viene utilizzato per indicare che è necessario utilizzare una formattazione alternativa per la riga successiva. Come ho detto, totalmente hacky, ma funziona! (Per lo più. Per qualche motivo il mio ultima colonna è sempre rientrata sulla linea ramo corrente. Ma io in realtà dovrebbe tornare a fare il lavoro vero e proprio, invece di tweaking questo di più.)
Eventuali duplicati di [Come posso ottenere un elenco di rami Git, ordinato dai più recenti commettere?] (Http://stackoverflow.com/questions/5188320/how-can-i-get-a-list-of-git-branches-ordered-by-most-recent-commit) –
Le risposte a: http://stackoverflow.com/questions/5188320/ how-can-i-get-a-list-of-git-branches-ordered-by-most-recent-commit sono tutti migliori delle risposte qui –