限制" git branch"的输出到某段时间

时间:2015-12-01 14:40:55

标签: git

我正在寻找将git branch的输出限制在特定时间段的选项。说,我想要所有在过去两个月仍然活跃的非合并分支机构。我可以使用

轻松获得所有未合并的分支
git branch -r --no-merged origin/master 

但是我将如何根据上一次提交的年龄过滤那些?

1 个答案:

答案 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