运行git拉过所有的子目录windows命令promt

我怎样才能从共享父目录更新多个git存储库,而无需cd到每个回购的Windows 7的根目录?

我有以下这些都是单独的git仓库(不是子模块):

c:\projects\repos\repo1 c:\projects\repos\repo2 c:\projects\repos\repo3 

在Linux上,我可以使用这个bash脚本

 find ~/projects/repos/ -type d -name .git \ | xargs -n 1 dirname \ | sort \ | while read line; do echo $line && cd $line && git pull origin $1 && echo ; done 

Windows批处理解决方案:

如果你想在.bat脚本中使用这个:

 for /D %%G in ("*") do (echo %%G) && (cd %%G) && (git pull origin) && (cd ..) 

如果它只是在控制台中:

 for /D %G in ("*") do (echo %G) && (cd %G) && (git pull origin) && (cd ..) 

您可以使用PowerShell脚本:

 $dirs = Get-ChildItem -Path . | ?{ $_.PSIsContainer } $back = pwd foreach ($dir in $dirs) { cd $dir.FullName echo $dir.FullName git pull origin } cd $back.Path 

一个更清洁和更好的方式来做到这一点,是一个正常的控制台命令:

 FOR /D %a IN (c:\projects\repos\*) do git -C %~fa pull 

或者在.bat文件中

 FOR /D %%a IN (c:\projects\repos\*) do git -C %%~fa pull PAUSE 

甚至是项目目录中的.bat文件

 FOR /D %%a IN (.\repos\*) do git -C %%~fa pull PAUSE