我正在寻找将git branch
的输出限制在特定时间段的选项。说,我想要所有在过去两个月仍然活跃的非合并分支机构。我可以使用
git branch -r --no-merged origin/master
但是我将如何根据上一次提交的年龄过滤那些?
答案 0 :(得分:1)
我们可以建立其他几个答案:
第二个包含一个很好的咒语。子命令基本上是你目前所拥有的,然后How do I get the list of branches not merged into master, ordered by most recent commit?命令并格式化分支。
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个月的更改。 for-each-ref
提供了一个很好的awk
解决方案:
... | awk '$0 > "2015-10-01"'
然后我们不必弄清楚每个月前的情况,date
可以this question。
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