命令git branch --list | select-string 2362
给了我一些符合模式2362
的分支的列表。我想删除服务器上的所有那些分支。
命令git branch --list | select-string 2362 | git push origin --delete $_
给我错误fatal: --delete doesn't make sense without any refs
,这与我从命令git push origin --delete
得到的错误相同。好像$ _为空,好像没有找到匹配模式的分支。
我在做什么错了?
答案 0 :(得分:3)
您要执行的操作有几个问题。 git
命令不接受管道输入(据我所知),因为它不是PowerShell cmdlet。
另外,Select-String
返回一个MatchInfo对象,所以$_
不仅包含分支的名称,还包含具有各种属性的该对象。
尝试一下:
(git branch --list | select-string 2362).line | ForEach-Object {
git push origin --delete $_
}
请注意,如果分支名称是当前分支,则可能会在其中一个分支名称中得到*字符。
答案 1 :(得分:0)
我想出了这个“单线”:
git branch --list | ? { $_ -like "*2362*" } | Select-Object -first 1 | % {
git push origin --delete ($_ -replace "[:\*]", " ").Trim()
}
Select-Object
仅用于删除一个分支,当然可以将其删除。前导星和:
被替换。修剪空间。
希望有帮助