TECH 으로 돌아가기
TECH HACKER NEWS 오늘 2분 읽기 29 READS

브랜치 이름이 '-D'라면? git의 숨은 방패 --end-of-options

git에서 git checkout $branch처럼 변수를 그대로 넘길 때, 만약 그 값이 --force-D처럼 대시로 시작하면 git은 이를 옵션으로 해석해버립니다. 사용자가 만든 브랜치명, CI 파이프라인의 변수, 외부 입력이 그대로 명령줄에 들어가는 순간 '아규먼트 인젝션' 취약점이 됩니다. 흔히 쓰는 -- 구분자는 옵션과 경로(revision/path)를 나누는 용도라 상황에 따라 모호하고 완벽하지 않습니다. 그래서 등장한 것이 --end-of-options입니다. 이 플래그 뒤에 오는 모든 값은 무조건 옵션이 아닌 위치 인자로 취급됩니다. 즉 git branch --end-of-options $name처럼 쓰면 이름이 -D든 뭐든 안전하게 처리됩니다. POSIX의 --와 별개로 git·일부 GNU 도구가 지원하는 이 방식은, 스크립트나 자동화 코드에서 신뢰할 수 없는 입력을 다룰 때 반드시 챙겨야 할 보안 습관입니다. 셸 스크립트를 짜는 개발자라면 기억해둘 만한 작은 방패입니다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://nesbitt.io/2026/07/21/end-of-options.html
SHARE
처리 중...