Git/Rebase-InsiderBranches.ps1
function Rebase-InsiderBranches { param( [Parameter(Mandatory = $false)] [string]$TargetCommit = 'master' ) $ErrorActionPreference = 'Stop' git fetch --unshallow --all git checkout -B $TargetCommit origin/$TargetCommit #find all remote branches $RemoteInsiderBranches = Get-GitBranches | ? { $_.Contains('remotes/origin/build/insider') } foreach ($RemoteInsiderBranch in $RemoteInsiderBranches) { #find the local branch tracking the remote branch $RemoteInsiderBranch = $RemoteInsiderBranch.Substring($RemoteInsiderBranch.IndexOf('origin')) $LocalInsiderBranches = git branch -vv | ? { $_.Contains(('{0}' -f $RemoteInsiderBranch)) } foreach ($LocalInsiderBranch in $LocalInsiderBranches) { $LocalInsiderBranch = $LocalInsiderBranch.TrimStart(' ') $LocalInsiderBranch = $LocalInsiderBranch.Substring(0, $LocalInsiderBranch.IndexOf(' ')) git branch -D $LocalInsiderBranch } git checkout $RemoteInsiderBranch -t #rebased and force push to origin git rebase --abort git rebase $TargetCommit git push -f } } Export-ModuleMember -Function Rebase-InsiderBranches |