[英]How can I delete all Git remote branches which are older than a year?
我的“远程”服务器上有很多 GIT 分支。
这个答案很好,但它并没有让我一直在那里。 如何删除所有已合并的 Git 分支?
您能否包括合并中的 master/develop 分支? 我如何为此添加时间间隔?
git branch -r --merged | grep -v master | sed 's/origin\///' | xargs -n 1 git push --delete origin
您可以使用 shell 脚本删除超过一年的合并分支,并删除超过五个月的合并分支。
#!/bin/bash
tarBranch=$(git branch -r --no-merged | grep -v master | grep -v developer | sed 's/origin\///')
for branch in $tarBranch
do
echo $branch
lastDate=$(git show -s --format=%ci origin/$branch)
convertDate=$(echo $lastDate | cut -d' ' -f 1)
Todate=$(date -d "$convertDate" +'%s')
current=$(date +'%s')
day=$(( ( $current - $Todate )/60/60/24 ))
echo "last commit on $branch branch was $day days ago"
if [ "$day" -gt 365 ]; then
git push origin :$branch
echo "delete the old branch $branch"
fi
done
#!/bin/bash
git checkout master
#deleted merged branches on master branch
tarBranch=$(git branch -r --merged | grep -v master | grep -v develop | sed 's/origin\///')
for branch in $tarBranch
do
echo $branch
lastDate=$(git show -s --format=%ci origin/$branch)
convertDate=$(echo $lastDate | cut -d' ' -f 1)
Todate=$(date -d "$convertDate" +'%s')
current=$(date +'%s')
day=$(( ( $current - $Todate )/60/60/24 ))
echo "last commit on $branch branch was $day days ago"
if [ "$day" -gt 150 ]; then
git push origin :$branch
echo "delete the old branch $branch"
fi
done
git checkout develop
#deleted merged branches on developer branch
tarBranch=$(git branch -r --merged | grep -v master | grep -v develop | sed 's/origin\///')
for branch in $tarBranch
do
echo $branch
lastDate=$(git show -s --format=%ci origin/$branch)
convertDate=$(echo $lastDate | cut -d' ' -f 1)
Todate=$(date -d "$convertDate" +'%s')
current=$(date +'%s')
day=$(( ( $current - $Todate )/60/60/24 ))
echo "last commit on $branch branch was $day days ago"
if [ "$day" -gt 150 ]; then
git push origin :$branch
echo "delete the old branch $branch"
fi
done
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.