루프 스루를위한 Windows의 경우 git pull을 실행 하시겠습니까?


4

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.

이것이 작동하지 c:\sdf>for /D %i in (*.*) do (CD c:\sdf\%i && DIR && pause) 않습니까? 일시 정지를 사용하여 문제를 해결하십시오. 또 다른 변형은 다음 c:\sdf>for /D %i in (*.*) do (CD %i && DIR && CD .. && PAUSE) 과 같습니다.c:\sdf>for /D %i in (*.*) do (PUSHD %i && DIR && POPD && PAUSE)
barlop

당신이에 대한 당신이 원하는 것을하고있다보고, 당신이 원하는 것을 얻을 경우, 당신은 GIT 명령을 볼 수 있습니다
barlop

답변:


5

이것은 CMD의 배치 파일에서 나를 위해 작동합니다.

for /d %%i in (*.*) do cd %%i & git pull & cd..

(이 사이트에서 얻는 모든 훌륭한 팁에 감사드립니다!)


고마워요. 교체 %%%(하지 스크립트에서) CMD에 순수하게 실행하는 경우.
AT

감사합니다
RuSs

4

이것이 Powershell의 단순한 단일 라이너가 아닐 수 있습니까?

예:

Resolve-Path D:\work\repos\*\.git | foreach { cd $_; git pull }

Windows Batch를 사용하고 싶습니다. 위에서 언급 한 for루프를 작동 시키는 방법이 없습니까?
AT

Powershell은 Windows의 사실상 셸입니다. 향후 Cmd는 더 이상 사용되지 않을 예정입니다. 손끝에 객체 지향 Windows 셸이 있으면 cmd에서 무언가를 함께 모으는 데 아무런 소용이 없으므로 모든 것이 훨씬 쉽습니다.
-my

1
정말? -글쎄, 그냥 코드를 변경하면 D:\work\repos\*받아 들일 것입니다.
AT

내가 게시 한 Resolve-Path 명령은 자동으로 repos의 모든 폴더를 가져온 다음 각 폴더에서 .git라는 폴더를 찾습니다. 그것이 코드에 따라 들어가고 싶은 곳입니다. 매우 우아한 솔루션입니다. 파이프와 그 이후의 모든 것을 제거하면 모든 .git 폴더가 제공됩니다.
megamorf

1

입력 powershellExplorer 주소 필드 당신의 기본 폴더Enter 키를 누르십시오 . 그런 다음 다음을 실행하십시오.

Get-ChildItem . -exclude *.ps1,temp,*.txt | foreach { cd $_; Write-Host "`r`n" $_; Git pull '-v' }

효과 Resolve-Path가없는 경우이 방법을 사용하십시오 .


0

기본 쉘 설정으로 git pull <repository>Git Shell에서 대신 구문 을 사용 cmd.exe하고 루프 내부 setlocal enabledelayedexpansion에서 변수 초기화 ( set) 를 찾으십시오 for.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.