Quiero obtener una lista de todas las ramas de un repositorio Git con las ramas "más frescas" en la parte superior, donde la rama "más fresca" es la que ha sido confirmada más recientemente (y es, por lo tanto, más probable que sea una a la que quiero prestar atención).
¿Existe alguna forma de utilizar Git para (a) ordenar la lista de ramas por la última confirmación, o (b) obtener una lista de ramas con la fecha de la última confirmación de cada una, en algún tipo de formato legible por la máquina?
En el peor de los casos, siempre podría ejecutar git branch
para obtener una lista de todas las ramas, analizar su salida, y luego git log -n 1 branchname --format=format:%ci
para cada una, para obtener la fecha de confirmación de cada rama. Pero esto se ejecutará en un equipo Windows, donde la puesta en marcha de un nuevo proceso es relativamente cara, por lo que lanzar el ejecutable de Git una vez por rama podría ser lento si hay muchas ramas. ¿Hay alguna manera de hacer todo esto con un solo comando?
Utilice la opción --sort=-committerdate
de [git for-each-ref
][git-for-each-ref];
También disponible desde Git 2.7.0 para git branch
:
git for-each-ref --sort=-committerdate refs/heads/
# Or using git branch (since version 2.7.0)
git branch --sort=-committerdate # DESC
git branch --sort=committerdate # ASC
git for-each-ref --sort=committerdate refs/heads/ --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'
Ampliando la respuesta de Jakub y el consejo de Joe, lo siguiente eliminará las "refs/heads/" para que la salida sólo muestre los nombres de las ramas:
git for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)'