프로 개발자의 마지막 퍼즐 — 실무에서 빛나는 Git 고급 스킬 (stash·rebase·tag·alias)

2026. 6. 23. 10:34·Hello Dev
이 글은 Git 입문 시리즈의 마지막 7편입니다. 브랜치·병합과 협업까지 익혔다는 가정에서 출발해요. 앞 내용이 가물가물하면 6편. 오픈소스와 팀 협업의 꽃 (PR과 Clone/Pull)을 먼저 훑고 오셔도 좋습니다.

여기까지 따라오셨다면, 사실 여러분은 이미 Git으로 혼자서도 협업으로도 코드를 다룰 수 있습니다. 커밋하고, 되돌리고, 브랜치를 치고, PR까지 보냈으니까요.

그런데 실무에서 일하다 보면 "어, 이런 것도 돼?" 싶은 순간들이 옵니다. 작업하다 말고 급한 버그를 고쳐야 할 때, 지저분해진 커밋 기록을 깔끔하게 펴고 싶을 때, 특정 시점을 'v1.0.0'으로 못 박아 두고 싶을 때 말이죠.

이번 마지막 글에서는 그럴 때 꺼내 쓰는 실무 단골 4가지 — stash(임시 보관), rebase(기록 정리), tag(버전 표식), 그리고 alias(명령어 단축)를 모았습니다. 당장 매일 쓰진 않아도, 알아두면 결정적인 순간에 빛을 발하는 것들이에요.

작업을 잠시 서랍에 넣기 — stash

한창 코드를 고치는 중인데, 갑자기 "긴급 버그 좀 봐주세요!" 연락이 옵니다. 지금 작업은 아직 커밋하기엔 어중간한 상태. 그렇다고 대충 커밋하자니 찜찜하고요. 이럴 때 쓰는 게 stash입니다.

stash는 아직 커밋하지 않은 변경사항을 통째로 임시 서랍에 넣어두는 기능이에요. 서랍에 넣으면 작업 디렉토리가 깨끗한(마지막 커밋) 상태로 돌아가, 곧바로 다른 일을 할 수 있습니다.

git stash             # 지금 변경사항을 서랍에 넣고 깨끗한 상태로
# ... 급한 버그 처리 후 ...
git stash pop         # 서랍에 넣어둔 작업을 다시 꺼내 이어서

pop은 "서랍에서 꺼내면서 서랍을 비우는" 명령입니다. 꺼낸 기록을 남겨두고 싶으면 pop 대신 apply를 쓰면 돼요. 서랍에 여러 개를 쌓아둘 수도 있습니다.

git stash list        # 서랍에 쌓인 목록 보기
git stash apply       # 꺼내되 서랍에도 남겨두기
git stash drop        # 특정 항목 버리기
새로 만든 파일은 안 들어가요 — git stash는 기본적으로 Git이 이미 추적 중인 파일만 보관합니다. 아직 한 번도 add하지 않은 새 파일(untracked)까지 같이 넣으려면 git stash -u를 쓰세요. 급할 때 새 파일이 서랍에 안 들어가 당황하는 일이 종종 있거든요.

커밋 기록을 깔끔하게 펴기 — rebase

5편에서 두 브랜치를 합칠 때 merge를 썼죠. merge는 합친 흔적('병합 커밋')을 남기며 기록을 있는 그대로 보존합니다. rebase는 같은 합치기인데 접근이 달라요. 내 브랜치의 커밋들을 상대 브랜치 끝으로 통째로 옮겨 붙여, 마치 처음부터 일직선으로 작업한 것처럼 기록을 깔끔하게 펴줍니다.

구분 merge(병합) rebase(재배치)
기록 모양 갈라졌다 합쳐진 그대로 한 줄로 곧게 편 직선
병합 커밋 생김 안 생김(깔끔)
사실 보존 실제 흐름 그대로 보기 좋게 다시 씀
git switch login
git rebase main       # login의 커밋들을 main 끝으로 옮겨 붙이기
rebase의 황금률 — 공유된 브랜치엔 쓰지 마세요 — rebase는 커밋을 새로 만들어 기록을 '다시 쓰는' 것이라, 옛 커밋들의 고유 번호가 전부 바뀝니다. 나 혼자 쓰는 로컬 브랜치라면 괜찮지만, 이미 push해서 동료가 받아 간 브랜치를 rebase하면 기록이 어긋나 모두가 큰 혼란에 빠져요. "남과 공유한 브랜치는 rebase 금지" — 이 한 줄만 기억하세요.

중요한 순간에 도장 찍기 — tag

드디어 첫 정식 버전을 릴리즈하는 날. 수많은 커밋 중 "바로 이게 v1.0.0이야"라고 못 박아 두고 싶을 때가 있습니다. 그 도장이 tag예요. 특정 커밋에 사람이 읽기 좋은 이름표를 붙이는 거죠.

태그에는 두 종류가 있습니다. 실무에서는 만든 사람·날짜·메시지까지 남는 annotated 태그를 권장해요.

git tag v1.0.0                          # 가벼운(lightweight) 태그 — 이름만
git tag -a v1.0.0 -m "첫 정식 릴리즈"   # annotated 태그 — 정보까지 기록(권장)
git tag                                 # 태그 목록 보기

한 가지 주의할 점. 태그는 git push를 해도 자동으로 따라 올라가지 않습니다. 원격(GitHub)에 태그를 올리려면 따로 밀어줘야 해요.

git push origin v1.0.0     # 특정 태그 하나 올리기
git push origin --tags     # 모든 태그 한꺼번에 올리기
GitHub 릴리즈의 출발점이 바로 태그예요 — GitHub에서 'Releases'로 버전을 배포해 본 적 있나요? 그 릴리즈가 바로 이 태그를 기반으로 만들어집니다. 태그를 올려두면 그 시점의 소스를 zip으로 내려받는 주소까지 자동으로 생기죠. 버전 관리의 마침표 같은 기능입니다.

긴 명령어를 짧게 — alias (보너스)

마지막은 소소하지만 매일 쓰게 되는 꿀팁입니다. 자주 치는 긴 명령어에 나만의 단축 별명을 달아두는 alias예요. 한 번 등록해두면 계속 편합니다.

git config --global alias.st status
git config --global alias.co switch
git config --global alias.last "log -1 HEAD"

이제 git status 대신 git st, git switch 대신 git co만 쳐도 됩니다. 손에 익으면 작업 속도가 은근히 빨라져요.

정리 — Git 입문, 여기까지 왔습니다

이번 글에서 다룬 4가지를 한 줄씩 정리하면 이렇습니다.

  • stash — 커밋하기 애매한 작업을 임시 서랍에 넣고 빼기. 급한 일이 끼어들 때.
  • rebase — 갈라진 기록을 한 줄로 깔끔하게. 단, 공유된 브랜치엔 절대 금지.
  • tag — 중요한 커밋에 버전 도장(v1.0.0). 원격엔 따로 push.
  • alias — 자주 쓰는 명령어에 단축 별명 달기.

이렇게 7편에 걸친 Git 입문 여정이 마무리됐습니다. 처음엔 까만 터미널이 막막했지만, 이제는 코드를 기록하고(commit), 백업하고(push), 되돌리고(restore), 갈래를 치고(branch), 함께 협업하는(PR) 전 과정을 손에 쥐셨어요. 나머지는 직접 부딪히며 익히는 일만 남았습니다. 막히는 순간이 오면, 그때 이 시리즈를 다시 펼쳐보셔도 좋고요. 여러분의 첫 커밋부터 첫 PR까지, 그 모든 순간을 응원합니다.

Git 입문 시리즈
← 이전 글 6편. 오픈소스와 팀 협업의 꽃 (PR과 Clone/Pull)
다음 글 → 🎉 Git 입문 시리즈 완결!

참고 자료

  • Pro Git 2판 (한국어) — Stashing과 Cleaning
  • Atlassian — 병합(merge) 및 리베이스(rebase) 비교
  • Pro Git 2판 (한국어) — 태그(tag)
  • Pro Git 2판 (한국어) — Git Alias
저작자표시 비영리 변경금지 (새창열림)

'Hello Dev' 카테고리의 다른 글

Git 입문 완전 정복 — 7편으로 끝내는 깃 기초부터 협업까지 (시리즈 목차)  (0) 2026.06.23
오픈소스와 팀 협업의 꽃 — Fork·Clone과 Pull Request로 첫 기여하기  (0) 2026.06.23
평행 우주에서 안전하게 개발하기 — Git 브랜치·병합(merge)과 충돌(conflict) 해결  (0) 2026.06.22
실수해도 괜찮아 — Git으로 되돌리기 (restore·amend·reset·revert, 그리고 생명줄 reflog)  (0) 2026.06.22
내 코드를 클라우드에 백업하기 — GitHub에 처음 git push 하기 (인스타에 사진 올리듯)  (0) 2026.06.22
'Hello Dev' 카테고리의 다른 글
  • Git 입문 완전 정복 — 7편으로 끝내는 깃 기초부터 협업까지 (시리즈 목차)
  • 오픈소스와 팀 협업의 꽃 — Fork·Clone과 Pull Request로 첫 기여하기
  • 평행 우주에서 안전하게 개발하기 — Git 브랜치·병합(merge)과 충돌(conflict) 해결
  • 실수해도 괜찮아 — Git으로 되돌리기 (restore·amend·reset·revert, 그리고 생명줄 reflog)
@Cura
@Cura
재밌는 IT 이야기와 최신 개발 뉴스를 쉽고 친절하게 전합니다.
  • @Cura
    HelloDev.kr
    @Cura
  • 전체
    오늘
    어제
    • 분류 전체보기 (9)
      • Hello Dev (8)
      • Trend & Tech (0)
      • Core Tech (0)
      • Dev Life (0)
      • Dev Humor (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      git 입문
      rebase merge 차이
      git switch
      깃 고급
      깃
      git restore
      개발입문
      깃허브 올리기
      git alias
      HelloDev
      깃허브 협업
      Github
      깃 되돌리기
      개발유머
      git
      충돌해결
      깃 입문
      버전관리
      reset revert 차이
      git amend
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.6
    @Cura
    프로 개발자의 마지막 퍼즐 — 실무에서 빛나는 Git 고급 스킬 (stash·rebase·tag·alias)
    상단으로

    티스토리툴바