在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?