【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
我想得到一个Git存储库中所有分支的列表,顶部有“最新鲜”的分支,其中“最新鲜”的分支是最近提交的分支(因此,更可能是一个分支)我想要注意)。
有没有办法可以使用Git(a)通过最新提交对分支列表进行排序,或者(b)以某种机器可读格式获取分支列表以及每个分支的最后提交日期?
最糟糕的情况是,我总是可以运行git branch来获取所有分支的列表,解析其输出,然后git log -n 1 branchname --format=format:%ci为每个分支,以获得每个分支的提交日期。 但是这将在Windows机器上运行,其中启动新进程相对昂贵,因此如果有很多分支,每个分支启动Git可执行文件可能会变慢。 有没有办法用一个命令完成所有这些?
#1楼
这是最佳代码,它结合了另外两个答案:
git for-each-ref --sort=-committerdate refs/heads/ --format='%(committerdate:short) %(authorname) %(refname:short)'
#2楼
这是一个简单的命令,列出了最新提交的所有分支:
git branch -v
要按最近提交的顺序排序,请使用
git branch -v --sort=committerdate
来源: http : //git-scm.com/book/en/Git-Branching-Branch-Management
#3楼
我有同样的问题,所以我写了一个名为Twig的Ruby gem。 它按时间顺序列出分支(最新的第一个),并且还可以让您设置最大年龄,以便您不列出所有分支(如果您有很多分支)。 例如:
$ twig
issue status todo branch
----- ------ ---- ------
2013-01-26 18:00:21 (7m ago) 486 In progress Rebase optimize-all-the-things
2013-01-26 16:49:21 (2h ago) 268 In progress - whitespace-all-the-things
2013-01-23 18:35:21 (3d ago) 159 Shipped Test in prod * refactor-all-the-things
2013-01-22 17:12:09 (4d ago) - - - development
2013-01-20 19:45:42 (6d ago) - - - master
它还允许您存储每个分支的自定义属性,例如,票证ID,状态,待办事项,并根据这些属性过滤分支列表。 更多信息: http : //rondevera.github.io/twig/
#4楼
我作为剧本的最佳结果:
git for-each-ref --sort=-committerdate refs/heads/ --format='%(refname:short)|%(committerdate:iso)|%(authorname)' |
sed 's/refs\/heads\///g' |
grep -v BACKUP |
while IFS='|' read branch date author
do
printf '%-15s %-30s %s\n' "$branch" "$date" "$author"
done
#5楼
基于ilius'版本,但当前分支以星形和彩色显示,并且仅显示未被描述为“月”或“年”的任何内容:
current_branch="$(git symbolic-ref --short -q HEAD)"
git for-each-ref --sort=committerdate refs/heads \
--format='%(refname:short)|%(committerdate:relative)' \
| grep -v '\(year\|month\)s\? ago' \
| while IFS='|' read branch date
do
start=' '
end=''
if [[ $branch = $current_branch ]]; then
start='* \e[32m'
end='\e[0m'
fi
printf "$start%-30s %s$end\\n" "$branch" "$date"
done
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3153572