我有一个包含10 git
repos的目录。
我希望在一个命令中同时对所有这些进行git pull
:
gpa // git-pull-all
这应该实际执行以下操作:
cd c:\repos;
foreach $dir in `ls -d` do
git pull & // unix version for background
cd ..
end
这在bash
(unix)中应该非常简单。在powershell中,我发现它非常复杂。
我该怎么做呢?
答案 0 :(得分:1)
这不是别名(用PowerShell的说法),它只是一个函数或一个脚本。
大多数情况下,您只需在PowerShell中找到相关的类似物。
因此,PowerShell中的Get-ChildItem
实际上是-Directory
的别名,在PowerShell v3 +中也支持foreach($thing in $things)
参数仅返回目录,因此该部分几乎可以正常工作。
虽然你可以进行ForEach-Object
循环,但在这种情况下,管道$repos = 'C:\repos'
Get-ChildItem -Path $repos -Directory | ForEach-Object -Process {
Push-Location -Path $_
git pull
Pop-Location
}
会更自然(PowerShell-ey),所以像这样:
cd c:\repos
foreach ($dir in (ls -di)) {
git pull
cd ..
}
作为参考,使用别名和替代语法使其看起来与原始版本最相似,可以这样做:
Start-Job
但是我推荐第一个因为:
这些示例都没有处理任务的后台处理。我暂时把它排除在外,因为它不是那么类似。
为此,您可以使用PowerShell Jobs。使用Invoke-Command -AsJob
或使用@YourFormula
。
看看如何使用工作,并决定是否要花时间将其应用于10个回购。