首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列出每个分支及其在Git中的最后修订日期

列出每个分支及其在Git中的最后修订日期
EN

Stack Overflow用户
提问于 2010-03-25 17:08:24
回答 11查看 57.8K关注 0票数 159

我需要从我们的远程存储库中删除旧的和未维护的分支。我试图找到一种方法来列出远程分支的最后修改日期,但我做不到。

有没有一种简单的方法来列出远程分支?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-03-25 17:24:41

commandlinefu有两个有趣的主张:

代码语言:javascript
运行
复制
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

或者:

代码语言:javascript
运行
复制
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,您可以类似地显示远程分支:

代码语言:javascript
运行
复制
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

Michael Forrest提到in the comments要求对sed表达式进行转义:

代码语言:javascript
运行
复制
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 

kontinuity增加了in the comments

如果你想把它添加到你的

中,下面的转义是必需的。

代码语言:javascript
运行
复制
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'

在多行中:

代码语言:javascript
运行
复制
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 refs/headsn8transwer更干净。And faster

另请参阅"Name only option for git branch --list?

更广泛地说,tripleee会提醒我们in the comments

  • 更喜欢现代的$(command substitution)语法,而不是过时的反引号语法。

(我在2014年用“What is the difference between $(command) and `command` in shell programming?”说明了这一点)

  • Don't read lines with for.
  • 可能会切换到git for-each-ref refs/remote以获取机器可读格式的远程分支机构名称
票数 191
EN

Stack Overflow用户

发布于 2014-01-23 17:49:38

下面是我使用的代码:

代码语言:javascript
运行
复制
git for-each-ref --sort=-committerdate:iso8601 --format= %(committerdate:iso8601)%09%(refname) refs/heads

这是输出:

代码语言:javascript
运行
复制
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/head“:

代码语言:javascript
运行
复制
git for-each-ref --sort='-committerdate:iso8601' --format=' %(committerdate:iso8601)%09%(refname)' refs/remotes

n8tr's answer上构建,如果您还对分支上的最后一位作者感兴趣,并且如果您有可用的“列”工具,您可以使用:

代码语言:javascript
运行
复制
git for-each-ref --sort='-committerdate:iso8601' --format='%(committerdate:relative)|%(refname:short)|%(committername)' refs/remotes/ | column -s '|' -t

这将为您提供:

代码语言:javascript
运行
复制
21 minutes ago  refs/remotes/a        John Doe
6 hours ago     refs/remotes/b        Jane Doe
6 days ago      refs/remotes/master   John Doe

你可能想要调用"git fetch --prune“来获得最新的信息。

票数 139
EN

Stack Overflow用户

发布于 2014-05-30 06:20:41

Olivier Croquette的基础上,我喜欢使用相对日期并缩短分支名称,如下所示:

代码语言:javascript
运行
复制
git for-each-ref --sort='-authordate:iso8601' --format=' %(authordate:relative)%09%(refname:short)' refs/heads

它给出了输出:

代码语言:javascript
运行
复制
21 minutes ago  nathan/a_recent_branch
6 hours ago        master
27 hours ago    nathan/some_other_branch
29 hours ago    branch_c
6 days ago      branch_d

我建议创建一个Bash文件,用于添加您喜欢的所有别名,然后将该脚本共享给您的团队。下面是一个仅添加此示例的示例:

代码语言:javascript
运行
复制
#!/bin/sh

git config --global alias.branches "!echo ' ------------------------------------------------------------' && git for-each-ref --sort='-authordate:iso8601' --format=' %(authordate:relative)%09%(refname:short)' refs/heads && echo ' ------------------------------------------------------------'"

然后,您可以这样做,以获得经过良好格式化和排序的本地分支列表:

代码语言:javascript
运行
复制
git branches
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2514172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档