Замена текста в канале

#powershell

#powershell

Вопрос:

У меня есть следующий скрипт, который я использую для удаления объединенных ветвей git:

 function Remove-MergedBranches
{
  git branch -a --merged |
    ForEach-Object { $_.Trim() } |
    Where-Object {$_ -NotMatch "^*"} |
    Where-Object {-not ( $_ -Like "*master" )} |
    Where-Object {-not ( $_ -Like "*develop" )} |
    Where-Object {-not ( $_ -Like "*dev" )} |
    % {$_.replace("/remotes","")} |
    ForEach-Object { git branch -d $_ }
}
  

replace Не работает.

Ветвь может быть remotes/origin/tg-training-section

Ответ №1:

Вы не хотите заменять /remotes в remotes/origin/tg-training-section том, что не соответствует (оно не начинается с косой черты), поэтому вы, вероятно, захотите опустить косую черту:

 # ....
% {$_.replace("remotes","")}
  

Другим способом было бы заменить /remotes и remotes с помощью -replace регулярного выражения:

 # ....
% {$_ -replace '/?remotes'}
  

Я бы также подумал о том, чтобы даже использовать b/?remotes , чтобы убедиться, что вы не заменяете remotes внутри строки.