我想得到一个 Git 存储库中所有分支的列表,顶部有 “最新鲜” 的分支,其中 “最新鲜” 的分支是最近提交的分支(因此,更可能是一个分支)我想要注意)。
有没有办法可以使用 Git(a)通过最新提交对分支列表进行排序,或者(b)以某种机器可读格式获取分支列表以及每个分支的最后提交日期?
最糟糕的情况是,我总是可以运行git branch
来获取所有分支的列表,解析它的输出,然后git log -n 1 branchname --format=format:%ci
为每个分支,以获得每个分支的提交日期。但这将在 Windows 机器上运行,其中启动一个新进程相对昂贵,因此如果有很多分支,每个分支启动 Git 可执行文件可能会变慢。有没有办法用一个命令完成所有这些?
使用git for-each-ref
的--sort=-committerdate
选项;
自 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))'
这是最佳代码,它结合了另外两个答案:
git for-each-ref --sort=-committerdate refs/heads/ --format='%(committerdate:short) %(authorname) %(refname:short)'