- 오래된 Git 브랜치 정리 문제를 해결하기 위한 간단한 명령어가 CIA 내부 개발 문서에서 발견됨
- 명령어는 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 명령만 입력하면 자동 정리 수행
효율성과 실용성
- 이 명령어는 매주 몇 분의 시간을 절약하고 브랜치 목록을 깔끔하게 유지하는 데 도움을 줌
- 단순하지만 지속적인 생산성 향상을 제공하는 실용적 도구로 평가됨