/workspace
├─ project1
├─ project2
├─ project3
...
workspace 하위 폴더에 여러 프로젝트 project1, project2, project3, ...가 있고 해당 프로젝트 디렉토리에도 각각 Git 저장소가 있다. 프로젝트가 한두 개면 상관이 없지만 10개만 넘어가도 프로젝트 한 개 열어서 git fetch를 입력하면 시간이 너무 낭비된다. 물론 인텔리제이에서 자동으로 git fetch를 해주지만, 만약 휴가를 다녀와서 변경 사항이 많을 때는 모든 프로젝트를 하나하나 열어서 확인하고 변경 사항을 적용하는 것도 절대 쉽지 않은 작업이다.
for d in */; do
echo "===== $d ====="
(cd "$d" && git fetch)
done
** 여기서 echo는 하위 디렉토리가 뭔지 출력하는 것으로 넣지 않아도 상관 없다.
0. workspace에서 Gti Bash를 열고 위를 입력한다.
1. `*/` -> 현재 디렉터리의 모든 하위 폴더를 순회한다.
ex) project1 project2 project3 ... 전부 가져온다.
2. === /project1 ==== 이 출력되고
3. `cd "%d"` -> 해당 프로젝트로 이동하고
4. git fetch를 실행한다.
git config --global alias.allfetch '!f() { for d in */; do (cd "$d" && git fetch); done }; f'
위와 같이 alias를 정의해서 사용할 수 있다. `'!...'`에서 !는 Git 명령어가 아닌 쉘 명령어임을 알려주는 문법이다.
1. `!` -> 쉘로 실행하겠다는 선언
2. `f(){ ... }` -> f라는 함수 정의
3. `;` -> 함수 정의 종료
4. `f` -> 방금 정의한 함수 실행
git allfetch
위와 같이 입력하면 위에서 정의한 함수가 실행되며, 해당 하위 디렉토리에 있는 Git 저장소가 있는 프로젝트에 git fetch가 일괄적으로 실행된다.
count=0;
for d in */; do
(cd "$d" && git fetch origin);
count=$((count+1));
done;
echo "TOTAL REPOS: $count"
위와 같이 count 변수를 선언해서 작업이 완료한 후에 총 몇 개의 하위 디렉토리를 들어갔는지 카운트 하도록 만들 수 있다.

실행결과는 다음과 같다.
count=0;
paths="";
for d in */; do
paths="${paths}${d}\n";
(cd "$d" && git fetch origin );
count=$((count+1));
done;
printf "%b" "$paths";
echo "TOTAL: $count"
path를 선언해서 개행으로 구분하고 작업을 완료한 후에 하위 디렉토리가 출력되도록 만들 수 있다.

실행 결과는 다음과 같다.
'Git' 카테고리의 다른 글
| IntelliJ(인텔리제이) git bash 커밋 메세지 한글 깨짐 (0) | 2025.12.29 |
|---|---|
| 브랜치 기준 차이로 발생한 DEV–PROD 설정 충돌 트러블슈팅 (0) | 2025.12.16 |
| [Git] 깃헙 레포지토리 처음부터 다시 구성하는 방법 - 공부한거 밀어버리기 (0) | 2025.05.07 |
| [Git] .gitignore 수정 후, 이미 추적된(tracked) 파일 제외하기 (0) | 2025.02.10 |
| [Git] pull requset 작성 법, Open a pull request 설명 (0) | 2024.11.04 |