Git fetch --prune 명령어로 오래된 원격 추적 브랜치 정리 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- *Git 초보자 및 중급자**
- 원격 저장소에서 사용하지 않는 브랜치를 정리해야 하는 개발자
- CI/CD 파이프라인에서 브랜치 관리를 최적화하고자 하는 팀원
- 난이도: 중간 (기초 Git 명령어 사용 가능)
핵심 요약
git fetch --prune
는 원격 저장소에 없는 오래된 원격 추적 브랜치(예:origin/feature-x
)를 자동으로 삭제함- 로컬 브랜치는 삭제하지 않음 (예:
git branch -D
사용 필요) - CI/CD 파이프라인 사용 시 주의: 다른 스크립트와 충돌 가능
섹션별 세부 요약
1. `git fetch --prune` 기능 설명
- 2가지 주요 기능:
- 원격 저장소의 최신 변경사항 가져오기
- 원격 저장소에 없는 원격 추적 브랜치 삭제
- 예시:
git fetch -p
또는git fetch --prune
명령어 사용
2. 주요 사용 시나리오
- 동료가 원격 브랜치를 삭제한 후
- 오래된 브랜치 참조로 인한 혼란 방지
- 브랜치 전환 전
- 최신 원격 브랜치 상태 유지
- CI/CD 파이프라인에서
- 자동화 환경 정리 및 효율성 향상
3. 주의사항 및 추가 명령어
- 로컬 브랜치 삭제 방법:
```bash
git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -D
```
- 원격 브랜치 삭제:
```bash
git push origin --delete branch-name
```
- 새로운 변경사항 없이 오래된 브랜치만 삭제:
```bash
git remote prune origin
```
4. 사용 시 주의점
- 대규모 팀의 경우: 빈번한
--prune
사용 시 브랜치 재생성으로 인한 혼란 유발 가능성 - 복구 방법:
- 원격 저장소에 해당 브랜치가 존재하는 경우:
git fetch
재실행 - 로컬 복사본이 있는 경우:
git reflog
검색
결론
- 정기적으로
git fetch --prune
사용으로 로컬 저장소 정리 - CI/CD 스크립트에서 사용 시, 다른 프로세스와의 충돌 가능성 검토
- 대규모 팀의 경우: 주기적인 사용보다 정기 점검으로 대체하는 것이 효율적
- 안전한 브랜치 삭제:
git branch -d
대신git branch -D
사용 시 주의 요망