简体   繁体   English

如何删除在 git 中以编程方式合并到 master 的超过 1 个月的分支?

[英]How to delete branches older than 1 month that was merged to master programmatically in git?

是否有一个命令能够以编程方式删除超过 1 个月的分支并一次性合并到 master 分支?

Building on top of the answer shared by @LazarNikolic ( Delete all branches that are more than X days/weeks old ):建立在@LazarNikolic 分享的答案之上( 删除所有超过 X 天/周的分支):

for k in $(git branch --merged master | sed /\*/d); do 
  if [ -n "$(git log -1 --before='1 month ago' -s $k)" ]; then
    git branch -D $k
  fi
done

Some background:一些背景:

  • git granch --merged master to only list branches that have been merged to master . git granch --merged master仅列出已合并到master分支。
  • git log --before to inspect log entries that are more than 1 month old. git log --before检查超过 1 个月的日志条目。 If any entries exist, for any merged branch, delete that branch.如果存在任何条目,则对于任何合并的分支,删除该分支。

In my case I'm using git version 2.25.1.就我而言,我使用的是 git 版本 2.25.1。 The answer above did not work for me but this does.上面的答案对我不起作用,但确实如此。

# Purge branches older than 1 month
for k in $(git branch | sed /\*/d)
do 
    log "Found branch $k"
    if [ -n "$(git log -1 --before='1 month ago' --grep='$k')" ]
    then
        git push -d origin $k &> /dev/null
        git branch -d $k &> /dev/null
        log "Purged branch $k"
    fi
done

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM