Bash からは簡単です:
for d in *; do GIT_DIR="$d/.git" git pull; done
または:
for d in *; do GIT_DIR="$PWD/$d/.git" git pull; done
ただし、Windows コマンド プロンプトではそれほど簡単ではありません。次のことを試しました:
for /D %i in (*.*) do cd "%i" && git pull
for /D %i in (*.*) do cd "<absolute_path>\%i" && git pull
for /D %i in (*.*) do set GIT_DIR="<absolute_path>\%i\.git git pull"
for /D %i in (*.*) do set GIT_DIR="<absolute_path>\%i\.git && git pull"
しかし、どれも機能しません。常に次のいずれかのエラーが発生します。
fatal: unable to access '"repo-name/.git" /config': Invalid argument
The system cannot find the path specified.
答え1
これは、CMD のバッチ ファイルで機能します。
for /d %%i in (*.*) do cd %%i & git pull & cd..
答え2
これは、Powershell の簡単なワンライナーでは無理でしょうか?
例:
Resolve-Path D:\work\repos\*\.git | foreach { cd $_; git pull }
答え3
入りpowershell
ますエクスプローラーアドレスフィールドあなたのベースフォルダそしてエンターを押す次に以下を実行します。
Get-ChildItem . -exclude *.ps1,temp,*.txt | foreach { cd $_; Write-Host "`r`n" $_; Git pull '-v' }
Resolve-Path
うまくいかない場合は、このアプローチを使用してください。
答え4
git pull <repository>
代わりに、デフォルトのシェル設定で Git Shell の構文を使用しcmd.exe
、ループ内でsetlocal enabledelayedexpansion
変数の初期化 ( set
)を検索することをお勧めしますfor
。