我怎样才能得到最近提交排序的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 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?