如何在没有cd进入Windows 7上每个repo的根目录的情况下,从共享父目录更新多个git存储库?
我有以下几个单独的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
答案 0 :(得分:8)
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 ..)
答案 1 :(得分:6)
更简洁,更好的方法是一个正常的控制台命令:
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
答案 2 :(得分:5)
您可以使用PowerShell脚本:
$dirs = Get-ChildItem -Path . | ?{ $_.PSIsContainer }
$back = pwd
foreach ($dir in $dirs)
{
cd $dir.FullName
echo $dir.FullName
git pull origin
}
cd $back.Path