Git

Git 강좌 07강 — 실전 팁: rebase · cherry-pick · tag · 트러블슈팅

🎯 학습 목표

  • rebase로 이력을 정리하는 개념을 이해한다.
  • cherry-pick으로 특정 커밋만 가져온다.
  • tag로 버전을 표시하고, 흔한 문제를 해결한다.

📖 개념 설명

rebase는 브랜치의 출발점을 최신으로 옮겨 이력을 한 줄로 깔끔하게 만듭니다. merge가 “합친 흔적”을 남기는 반면, rebase는 직선 이력을 만들어 가독성이 좋습니다. 단, 이미 공유된(push된) 커밋은 rebase하지 않는 것이 원칙입니다.

tag는 특정 커밋에 v1.0.0 같은 이름표를 붙여 릴리스 시점을 표시합니다.

💻 실습 — rebase / cherry-pick / tag

# 내 브랜치를 최신 main 위로 재배치 (직선 이력)
git switch feature/x
git rebase main
# 충돌 나면 해결 후: git add . && git rebase --continue
# 중단하려면: git rebase --abort

# 다른 브랜치의 특정 커밋 하나만 현재 브랜치로 가져오기
git cherry-pick <커밋해시>

# 버전 태그 달고 푸시
git tag -a v1.0.0 -m "첫 정식 릴리스"
git push origin v1.0.0

💻 자주 만나는 문제

# 1) 마지막 커밋 메시지 수정 (push 전)
git commit --amend -m "새 메시지"

# 2) 방금 한 작업을 잘못된 브랜치에서 커밋했을 때
#    → reset으로 커밋만 풀고, 올바른 브랜치로 옮겨 다시 커밋

# 3) 특정 파일만 다른 브랜치 버전으로 가져오기
git checkout main -- 경로/파일명

# 4) 누가 이 줄을 언제 바꿨나
git blame 파일명

# 5) 작업 트리 완전 초기화(추적 안 되는 파일 삭제, 주의)
git clean -fd

⚠️ 주의사항

  • 공유된 브랜치에 rebase + 강제 push(--force)는 협업자 이력을 깨뜨릴 수 있습니다. 꼭 필요하면 --force-with-lease를 쓰세요.
  • git clean -fd는 추적 안 되는 파일을 삭제합니다. -n(미리보기)으로 먼저 확인하세요.

💡 팁

  • 이력을 한눈에 보려면 git log --oneline --graph --all를 alias로 등록해 두세요.
  • 헷갈릴 때 git status는 “다음에 무엇을 하면 되는지”를 친절히 알려 줍니다. 막히면 먼저 status를 보세요.