- 오래된 Git 브랜치 정리 문제를 해결하기 위한 간단한 명령어가 CIA 내부 개발 문서에서 발견됨
git branch --merged | grep -v "\*\|master" | xargs -n 1 git branch -d - 명령어는
git branch --merged결과에서 현재 브랜치와 master를 제외하고 병합된 브랜치를 일괄 삭제함 - 현대 프로젝트에 맞게
main과develop브랜치를 제외하도록 수정된 버전도 있음 - Git alias로 등록해 반복 작업을 자동화할 수 있으며, 단순하지만 지속적인 작업 효율 향상과 저장소 정리에 유용한 도구
Vault7에서 발견된 Git 팁
- 2017년 WikiLeaks가 공개한 Vault7 문서에는 CIA의 해킹 도구와 내부 개발 문서가 포함되어 있었음
- 그중 한 페이지에 Git 팁과 트릭 모음이 있었으며, 대부분은 일반적인 커밋 수정, 스태시, bisect 사용법 등이었음
- 해당 문서에서 발견된 한 줄짜리 명령어가 내
~/.zshrc에 지금까지 유지되고 있음
오래된 브랜치 정리 문제
- 로컬 Git 저장소에는 시간이 지나며 병합된 브랜치가 누적되어 정리가 어려워짐
- 기능 브랜치, 핫픽스, 실험용 브랜치 등이 병합 후에도 남아
git branch목록이 복잡해짐
- 기능 브랜치, 핫픽스, 실험용 브랜치 등이 병합 후에도 남아
-
git branch --merged명령으로 병합된 브랜치를 확인할 수 있지만, 수동 삭제는 번거로움
CIA 문서의 원래 명령어
- 제시된 원래 명령어는 다음과 같음
git branch --merged | grep -v "\*\|master" | xargs -n 1 git branch -d - 구성 요소 설명
-
git branch --merged: 현재 브랜치에 병합된 모든 로컬 브랜치 목록 출력 -
grep -v "\*\|master": 현재 브랜치(*)와master를 제외 -
xargs -n 1 git branch -d: 나머지 브랜치를 하나씩 안전하게 삭제 (-d는 병합되지 않은 브랜치는 삭제하지 않음)
-
현대화된 명령어 버전
- 대부분의 프로젝트가
main브랜치를 사용하므로 명령어를 다음과 같이 수정 가능git branch --merged origin/main | grep -vE "^\s*(\*|main|develop)" | xargs -n 1 git branch -d - 배포 후
main브랜치에서 실행하면 수십 개의 브랜치가 몇 개로 줄어듦 - 이 명령어를 Git alias로 등록해 간편하게 실행 가능
alias ciaclean='git branch --merged origin/main | grep -vE "^\s*(\*|main|develop)" | xargs -n 1 git branch -d'- 이후 저장소에서
ciaclean명령만 입력하면 자동 정리 수행
- 이후 저장소에서
효율성과 실용성
- 이 명령어는 매주 몇 분의 시간을 절약하고 브랜치 목록을 깔끔하게 유지하는 데 도움을 줌
- 단순하지만 지속적인 생산성 향상을 제공하는 실용적 도구로 평가됨