Powershell批量删除Git中无人维护的Branch

来源:互联网 发布:研究方向数据图像处理 编辑:程序博客网 时间:2024/04/27 12:28

Powershell批量删除Git中无人维护的Branch

有这个需求 思路是
1. 批量获取所有分支
2. 取得该分支最后一次提交的时间
3. 比较最后一次提交时间与定义的无人维护时间的阈值,是否满足删除条件
4. 满足筛选条件的分支进行删除

批量获取所有分支

尝试输入以下命令

git branch –remote

返回如下分支名称

  origin/dev_chdoil  origin/dev_chdqqqqq  origin/dev_cl_3u  origin/dev_clover

至此第一步完成

取得该分支最后一次提交的时间

隐约记得git log有查看提交时间的功能
通过谷歌最后确定命令如下
git log -1 分支名 –pretty=format:”%cD”

比较时间戳是否无人维护

StackFlow上大神给出String转DateTime方法
[datetime]::Parse((git log -1 $_.trim() –pretty=format:”%cD”)) -lt “2017-01-01”

删除远程分支

https://github.com/Jisuanke/tech-exp/issues/6
参考Github上文章 这个文章是删除本地的分支
https://segmentfault.com/q/1010000008841093
阅读以上文章给出命令
git push origin –delete 分支名

最后用管道串起来

git branch --remote|Where-Object{!$_.contains("master")}|Where-Object{[datetime]::Parse((git log -1 $_.trim() --pretty=format:"%cD")) -lt "2017-01-01"}|ForEach-Object{git push origin --delete ($_.Replace("origin/","")).trim()}

本地分支删除代码

git branch|Where-Object{!$_.contains("master") -and !$_.contains("*")}|Where-Object{[datetime]::Parse((git log -1 $_.trim() --pretty=format:"%cD")) -lt "2017-05-01"}|ForEach-Object{git branch -D $_.trim()}

搜索引擎是个好东西