Quero obter uma lista de todos os ramos em um repositório Git com o "freshest" ramos no topo, onde o "freshest" ramo é o que'tem sido comprometido mais recentemente (e é, portanto, mais provável que seja um que eu queira prestar atenção).
Existe alguma forma de eu poder usar Git para (a) ordenar a lista de ramos por último commit, ou (b) obter uma lista de ramos junto com cada um's last-commit date, em algum tipo de formato legível por máquina?
Na pior das hipóteses, eu sempre poderia executar git branch
para obter uma lista de todos os branches, analisar sua saída, e então git log -n 1 branchname --format=format:%ci
para cada um, para obter cada branch's commit date. Mas isso será executado em uma caixa do Windows, onde rodar um novo processo é relativamente caro, então lançar o executável Git uma vez por ramo pode ficar lento se houver um monte de ramos. Existe uma maneira de fazer tudo isso com um único comando?
Utilize a opção --sort=-committerdate
da [git-for-each-ref`][git-for-each-ref];
Também disponível desde Git 2.7.0 para [git branch
][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))'
http://www.kernel.org/pub/software/scm/git/docs/git-for-each-ref.html http://www.kernel.org/pub/software/scm/git/docs/git-branch.html
Expandindo em resposta de Jakub e a dica de Joe, o seguinte irá retirar os "refs/cabeças/" para que a saída mostre apenas os nomes dos ramos:
git for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)'
3]3[4]