如何在Powershell中使用Git for Windows来迭代我的分支,过滤掉合并的分支并删除它们?
我已经尝试过一些研究,但我发现的每个答案都围绕着使用bash特定命令,例如grep和xargs.Powershell没有相同的命令,因此这些命令对我不起作用.
但是,根据该研究,我发现git for-each-ref --format '%(refname:short)' refs/heads可以显示所有本地分支,同时git branch -d将删除任何合并分支.但是,将这两个命令连接在一起(git for-each-ref --format '%(refname:short)' refs/heads | git branch -d)不起作用,因为第一个命令的输出没有按照我的预期进行管道传输.
在玩了一些关于Powershell命令的进一步研究之后,我找到了解决方案!
虽然Powershell没有xargs命令,但确实有类似的命令ForEach-Object.此命令允许我们处理输出的每一行git for-each-ref.对于这个特定的问题,以下行做了诀窍:
git for-each-ref --format '%(refname:short)' refs/heads | ForEach-Object {git branch $_ -d}
ForEach-Object命令后的花括号包含您希望运行的命令,而$_变量代表管道命令的每一行输出.
希望这有助于其他新手Powershell/Git用户!
git branch --merged | Select-String -Pattern '^[^\*].*' | ForEach-Object { git branch -d $_.ToString().Trim() }
脚步:
列出合并的分支:git branch --merged
feature/branch1
feature/branch2
* master
Run Code Online (Sandbox Code Playgroud)
过滤掉以 * 开头的分支(当前分支):Select-String -Pattern '^[^\*].*'
feature/branch1
feature/branch2
Run Code Online (Sandbox Code Playgroud)
删除分支ForEach-Object { git branch -d $_.ToString().Trim() }
请注意,在 #3 中,我从输出中删除了一些空格:$_.ToString().Trim()。否则我们会得到如下错误:
error: branch ' feature/yourbranch' not found.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
955 次 |
| 最近记录: |