我怎样才能得到最近提交排序的git分支列表?

我想获得Git仓库中所有分支的列表,其中“最新鲜”的分支位于顶部,其中“最新”分支是最近被承诺的分支(并且因此更可能是一个分支我想要注意)。

有没有一种方法可以使用Git来(a)通过最新提交对分支列表进行排序,或者(b)以某种机器可读格式获取分支列表以及每个分支的最后提交日期?

最糟糕的情况是,我总是可以运行git branch来获取所有分支的列表,解析其输出,然后对每个分支执行git log -n 1 branchname --format=format:%ci来获取每个分支的提交日期。 但是这将运行在一个Windows机器上,在这个机器上启动一个新的进程相对比较昂贵,因此如果有很多分支机构,每个分支启动一次git可执行文件就会变慢。 有没有办法用一个命令来完成所有这些?


使用--sort=-committerdate选项的git for-each-ref ;
从Git 2.7.0开始,也可用于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))'

结果:

结果


为了扩展Jakub的回答和Joe的提示,以下内容将删除“refs / heads /”,以便输出仅显示分支名称:

git for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)'

最近的git分支


这是最佳代码,它结合了另外两个答案:

git for-each-ref --sort=-committerdate refs/heads/ --format='%(committerdate:short) %(authorname) %(refname:short)'
链接地址: http://www.djcxy.com/p/4519.html

上一篇: How can I get a list of git branches, ordered by most recent commit?

下一篇: How to list only the file names that changed between two commits?