Git
git stash에 메시지를 붙여야 하는 이유
메시지 없는 stash는 나중에 꺼낼 때 뭔지 알 수 없다. 짧은 메모 하나가 복구 시간을 크게 줄여준다.
작업 중간에 급하게 브랜치를 바꿔야 할 때 git stash를 습관처럼 쓴다. 문제는 메시지를 안 남기는 경우다.
git stash
이렇게만 하면 나중에 git stash list를 쳐봤을 때 이런 화면이 나온다.
stash@{0}: WIP on main: 3f2a1b9 fix: 로그인 리다이렉트
stash@{1}: WIP on main: 3f2a1b9 fix: 로그인 리다이렉트
stash@{2}: WIP on feature/signup: a8c4e21 feat: 회원가입 폼
같은 커밋 위에 쌓인 stash가 두 개면 어느 게 어느 작업인지 알 방법이 없다. 결국 하나씩 git stash show -p stash@{0} 으로 diff를 열어봐야 한다.
메시지를 붙이면 달라지는 것
git stash push -m "auth: 토큰 갱신 로직 임시 저장"
목록이 바뀐다.
stash@{0}: On main: auth: 토큰 갱신 로직 임시 저장
stash@{1}: On main: dashboard: 차트 데이터 바인딩 중
복구할 때 고민할 필요가 없다. 어떤 맥락인지 한 줄로 바로 보인다.
특정 파일만 stash하는 경우
여러 작업이 섞여 있을 때는 파일을 지정해서 stash할 수 있다.
git stash push -m "api: 에러 핸들러 수정 중" -- src/lib/api.ts
나머지 변경 사항은 워킹 디렉터리에 그대로 남고, 지정한 파일만 stash에 들어간다. 긴급 핫픽스를 처리하고 돌아올 때 유용하다.
staged 변경만 stash
git stash push --staged -m "ui: 버튼 컴포넌트 분리"
--staged 옵션을 쓰면 index에 올린 것만 stash로 빠진다. 아직 add하지 않은 작업은 워킹 트리에 남는다.
메시지 하나 더 타이핑하는 게 귀찮아 보이지만, 일주일 뒤에 stash 목록을 열어보면 확실히 다르다. 그때 가서 diff를 하나씩 열어보는 시간이 더 아깝다.