在所有子目录windows命令提示符下运行git pull

时间:2014-10-23 10:36:11

标签: windows git command-prompt

如何在没有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

3 个答案:

答案 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
相关问题