Jeg ønsker å få en liste over alle grenene i et Git-repositorium med de "ferskeste" grenene øverst, der den "ferskeste" grenen er den som har blitt forpliktet til sist (og er derfor mer sannsynlig å være en jeg vil være oppmerksom på).
Er det en måte jeg kan bruke Git til å enten (a) sortere listen over grener etter siste forpliktelse, eller (b) få en liste over grener sammen med hver enkelt dato for siste forpliktelse, i et slags maskinlesbart format?
I verste fall kan jeg alltid kjøre git branch
for å få en liste over alle grenene, analysere utdataene, og deretter git log -n 1 grennavn --format=format:%ci
for hver enkelt, for å få hver gren' s commit-dato. Men dette vil kjøre på en Windows-boks, der det er relativt dyrt å spinne opp en ny prosess, så å starte Git-kjørbar en gang per gren kan bli treg hvis det er mange grener. Er det en måte å gjøre alt dette med en enkelt kommando?
Bruk alternativet --sort=-committerdate
for [git for-each-ref
][git-for-each-ref];
Også tilgjengelig siden Git 2.7.0 for 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))'
Utvidelse av Jakubs svar og Joes tips, vil følgende fjerne "refs/heads/" slik at utdataene bare viser grennavnene:
git for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)'