在git中列出每个分支及其最新版本的日期
我需要从我们的远程回购中删除旧的无人维护的分支。 我试图找到一种方法,用它们的最后修改日期列出远程分支,但我不能。
有人知道用这种方法列出远程分支的简单方法吗?
commandlinefu有两个有趣的命题:
for k in `git branch | perl -pe s/^..//`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`t$k; done | sort -r
要么:
for k in `git branch | sed s/^..//`; do echo -e `git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k --`t"$k";done | sort
这是针对本地分支的,采用Unix语法。 使用git branch -r
,你可以类似地显示远程分支:
for k in `git branch -r | perl -pe 's/^..(.*?)( ->.*)?$/1/'`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`t$k; done | sort -r
迈克尔福雷斯特在评论中提到zsh需要用于sed
表达式的转义:
for k in git branch | perl -pe s/^..//; do echo -e git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1t$k; done | sort -r
kontinuity在评论中补充道:
如果你想添加你的zshrc,需要下面的转义。
alias gbage='for k in `git branch -r | perl -pe '''s/^..(.*?)( ->.*)?$/1/'''`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`t$k; done | sort -r'
在多行中:
alias gbage='for k in `git branch -r |
perl -pe '''s/^..(.*?)( ->.*)?$/1/'''`;
do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- |
head -n 1`t$k; done | sort -r'
这是我使用的:
git for-each-ref --sort='-committerdate:iso8601' --format=' %(committerdate:iso8601)%09%(refname)' refs/heads
这是输出:
2014-01-22 11:43:18 +0100 refs/heads/master
2014-01-22 11:43:18 +0100 refs/heads/a
2014-01-17 12:34:01 +0100 refs/heads/b
2014-01-14 15:58:33 +0100 refs/heads/maint
2013-12-11 14:20:06 +0100 refs/heads/d/e
2013-12-09 12:48:04 +0100 refs/heads/f
对于远程分支,只需使用“refs / remotes”而不是“refs / heads”:
git for-each-ref --sort='-committerdate:iso8601' --format=' %(committerdate:iso8601)%09%(refname)' refs/remotes
您可能需要先调用“git fetch --prune”以获取最新信息。
只需添加到@VonC的评论中,为了方便起见,请将您的首选解决方案添加到〜/ .gitconfig别名列表中:
[alias]
branchdate = !git for-each-ref --sort='-authordate' --format='%(refname)%09%(authordate)' refs/heads | sed -e 's-refs/heads/--'
然后一个简单的“git branchdate”打印出你的列表......
链接地址: http://www.djcxy.com/p/19491.html上一篇: Listing each branch and its last revision's date in git
下一篇: How can I delete all Git branches which have been merged?