02-05 stash · tag · cherry-pick
실전에서 자주 구하는 세 도구 — 작업 임시 보관(stash), 버전 표시(tag), 커밋 선별 적용(cherry-pick).
실전에서 자주 구하는 세 도구 — 작업 임시 보관(stash), 버전 표시(tag), 커밋 선별 적용(cherry-pick).
목표: 상황에 맞춰 세 명령을 능숙하게 활용
🎒 git stash — 작업 임시 보관
급히 다른 브랜치로 가야 하는데 커밋하기 애매한 변경이 있을 때.
git stash # 변경을 치워두고 깨끗한 상태로
git stash -u # untracked 파일까지 포함
git stash push -m "로그인 작업" # 메시지 붙여 저장
git stash list # 목록 (stash@{0}, {1}...)
git stash show -p stash@{0} # 내용 미리보기(diff)
git stash pop # 최근 것 꺼내고 목록에서 제거
git stash apply stash@{1} # 특정 것 적용(목록에 유지)
git stash drop stash@{0} # 삭제
git stash clear # 전체 삭제
git stash branch new-branch # stash에서 새 브랜치 생성
[!tip] pop vs apply
pop= apply + drop. 적용이 잘 될지 불확실하면apply로 먼저 적용해보고, 괜찮으면 따로drop하는 게 안전하다.
전형적 흐름:
git stash # 작업 치우기
git switch main && git pull # 급한 일 처리
git switch feature
git stash pop # 작업 복구
🏷️ git tag — 버전 태그
특정 커밋(보통 릴리스)에 고정 이름표를 붙인다.
git tag # 목록
git tag -l "v1.*" # 패턴 필터
git tag v1.0.0 # 가벼운 태그(이름만)
git tag -a v1.0.0 -m "첫 릴리스" # 주석 태그(작성자/날짜/메시지, 권장) ⭐
git tag -a v1.0.0 9f3a1c2 # 특정 과거 커밋에 태그
git show v1.0.0 # 태그 정보
가벼운 태그 vs 주석 태그
| 구분 | 가벼운(lightweight) | 주석(annotated) |
|---|---|---|
| 저장 | 커밋 포인터만 | 별도 객체(작성자·날짜·메시지·서명) |
| 용도 | 임시 북마크 | 공식 릴리스(권장) |
태그 푸시 (자동 전송 안 됨!)
git push origin v1.0.0 # 특정 태그
git push origin --tags # 전체 태그
git tag -d v1.0.0 # 로컬 삭제
git push origin --delete v1.0.0 # 원격 삭제
🍒 git cherry-pick — 커밋 선별 적용
다른 브랜치의 특정 커밋만 골라 현재 브랜치에 복사한다.
git cherry-pick <commit> # 커밋 1개 적용
git cherry-pick A B C # 여러 개
git cherry-pick A^..B # A 다음부터 B까지 범위
git cherry-pick -n <commit> # 적용만(커밋은 보류)
git cherry-pick -x <commit> # 원본 커밋 해시를 메시지에 기록
git cherry-pick --abort # 충돌 시 취소
git cherry-pick --continue # 충돌 해결 후 계속
graph LR
subgraph "main"
M1["C1"] --> M2["C2"]
end
subgraph "release"
R1["C1"] --> R2["hotfix(C2 복사)"]
end
M2 -.->|"cherry-pick"| R2
용도: hotfix 커밋을 release 브랜치에도 반영, 특정 기능 커밋만 먼저 빼오기.
[!warning] 중복 커밋 주의 cherry-pick은 새 해시의 복사본을 만든다. 나중에 두 브랜치를 병합하면 같은 변경이 중복될 수 있다(보통 Git이 자동 처리하지만 충돌 가능).
📋 체크리스트
- stash로 작업 임시 보관·복구
- pop vs apply 차이
- 가벼운 태그 vs 주석 태그
- 태그를 명시적으로 push
- cherry-pick으로 커밋 선별 적용
- cherry-pick 중복 커밋 주의점
🔗 관련 노트
- 02-04-gitignore와-파일-관리 — 이전
- 02-06-대화형-리베이스와-히스토리-정리 — 다음
- 01-05-되돌리기와-복구 — reflog 복구
- 02-03-커밋-컨벤션과-시맨틱-버저닝 — 태그와 SemVer
마지막 업데이트: 2026-06-02