몇몇 Git 저장소를 fork하여 참조할 때 또는 여러 컴퓨터에서 git을 이용해 작업을 진행할 때
이미 알고 있는 저장내역을 한번에 pull 하는 방법에 대해 알아보겠습니다.
mac에서 사용 방법#
아래와 같이 명령어를 입력하면 이용할 수 있습니다.
1
| find . -type d -name .git -print 2>/dev/null -exec git --git-dir={} --work-tree=$PWD/{}/.. pull \;
|
만약 특정 함수를 지정하여 명령어로 이용하고 싶다면 ./zshrc 기준으로 아래와 같이 함수를 추가합니다.
1
2
3
4
5
6
7
| vim ~/.zshrc # 편집
function pull {
find . -type d -name .git -print 2>/dev/null -exec git --git-dir={} --work-tree=$PWD/{}/.. pull \;
}
source ~/.zshrc # 적용
|
실행하고 싶은 상단에서 해당 명령어를 입력하면 됩니다.
window에서 사용 방법#
아래의 압축파일을 다운로드하여 .bat 파일
을 여러 git을 호출하고 싶은 위치의 상단에서 실행하면 됩니다.
powershell 파일도 마찬가지로 상단에서 해당 파일을 powershell에서 실행할 수 있습니다.
압축파일
실행하면 아래와 같이 순차적으로 git pull을 할 수 있습니다..!
.bat 스크립트 코드(feat. gpt)는 아래와 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| @echo off
setlocal enabledelayedexpansion
:: 현재 디렉터리와 하위 디렉터리에서 .git 디렉터리를 찾습니다.
for /f "delims=" %%i in ('dir /s /b /ad .git 2^>nul') do (
set "repoPath=%%i"
set "workTreePath=%%~dpi"
set "workTreePath=!workTreePath:~0,-1!"
echo Updating repository at !workTreePath!
pushd !workTreePath!
git pull
popd
)
endlocal
pause
|
.ps1 스크립트 코드는 아래와 같습니다.
1
2
3
4
5
6
7
8
9
| # 현재 디렉터리 및 하위 디렉터리에서 모든 .git 디렉터리를 찾음
$gitDirs = Get-ChildItem -Recurse -Directory -Force -Filter ".git"
foreach ($gitDir in $gitDirs) {
$repoPath = $gitDir.FullName
$workTreePath = Split-Path $repoPath -Parent
Write-Output "Updating repository at $workTreePath"
git --git-dir=$repoPath --work-tree=$workTreePath pull
}
|