【发布时间】:2015-12-02 13:15:05
【问题描述】:
我正在寻找将git branch 的输出限制在特定时间段内的选项。比如说,我想要在过去两个月内仍然活跃的所有非合并分支。我可以得到所有不容易与
git branch -r --no-merged origin/master
但是我将如何继续按上次提交的年龄过滤这些?
【问题讨论】:
标签: git
我正在寻找将git branch 的输出限制在特定时间段内的选项。比如说,我想要在过去两个月内仍然活跃的所有非合并分支。我可以得到所有不容易与
git branch -r --no-merged origin/master
但是我将如何继续按上次提交的年龄过滤这些?
【问题讨论】:
标签: git
我们还可以建立其他几个答案:
第二个包含一个很好的咒语。子命令基本上就是你目前所拥有的,然后for-each-ref 对分支进行排序和格式化。
git for-each-ref \
--sort=-committerdate \
--format="%(committerdate:short) %(refname:short)" \
$(git branch -r --no-merged origin/master | sed -e 's#^ *#refs/remotes/#')
2015-11-12 origin/something
2015-10-02 origin/another_thing
2015-10-01 origin/so_many_things
2015-09-30 origin/an_older_thing
2014-09-14 origin/a_really_old_thing
从那里,您可以过滤最近 2 个月的更改。 this question 提供了一个不错的 awk 解决方案:
... | awk '$0 > "2015-10-01"'
然后我们不必每次都弄清楚 2 个月前是什么,date 可以help us out。
date --date='-2 months' +'%Y-%m-%d'
2015-10-01
所以,总的来说,我们有:
git for-each-ref \
--sort=-committerdate \
--format="%(committerdate:short) %(refname:short)" \
$(git branch -r --no-merged origin/master | sed -e 's#^ *#refs/remotes/#') |\
awk "\$0 > \"$(date --date='-2 months' +'%Y-%m-%d')\""
2015-11-12 origin/something
2015-10-02 origin/another_thing
2015-10-01 origin/so_many_things
【讨论】: