코드 리뷰에서 티 나는 git 명령어 10가지, 신입과 시니어의 차이

add, commit, push, pull은 입에 붙었지만, rebase나 reflog 앞에서는 손이 멈추시나요? Stack Overflow Developer Survey 2021 기준 전체 응답자의 93%가 Git을 사용한다고 답했을 만큼 Git은 사실상 표준 도구입니다. 하지만 실제 코드 리뷰 자리에서 마주치는 명령어는 그 기본기를 훌쩍 넘어섭니다.

git 명령어를 실습하며 터미널을 들여다보는 개발자 워크스페이스 이미지
Photo by Chris Ried on Unsplash

최근 dev.to에 개발자 Sylwia Lask가 올린 중급 Git 명령어 정리 글을 한국 개발팀의 코드 리뷰·채용 맥락으로 다시 풀어봤습니다. 후배님이 지금 팀에서 자주 보는 PR 코멘트 중 몇 개는, 사실 이 명령어들을 모르기 때문에 생기는 것일 수 있어요.

머지와 리베이스, 실무에서 뭐가 다를까

많은 개발자가 mergerebase를 거의 같은 것처럼 씁니다. 둘 다 “다른 브랜치 변경 사항을 내 브랜치로 가져온다”는 목적은 같지만, 방식이 완전히 다릅니다.

  • git merge main: 두 히스토리를 그대로 합치고 병합 커밋을 하나 남깁니다. 실제로 무슨 일이 있었는지 기록이 보존되지만, 반복하면 히스토리가 지저분해집니다.
  • git rebase main: 내 커밋을 최신 main 위로 옮겨 다시 적용합니다. 히스토리는 깔끔해지지만 커밋 해시가 바뀌므로 히스토리를 다시 쓰는 것이라는 점을 꼭 기억해야 합니다.

원칙은 간단합니다. 본인 혼자 작업 중인 브랜치는 리베이스해도 되지만, 이미 다른 사람이 내 커밋을 기준으로 작업 중이면 리베이스를 피하세요. 충돌이 나서 되돌리고 싶다면 git merge --abort 또는 git rebase --abort로 병합·리베이스 시작 전 상태로 복귀할 수 있습니다.

커밋을 다듬는 3가지: amend, 인터랙티브 리베이스, force-with-lease

커밋 히스토리를 정리하는 git 워크플로우 개념 이미지
리베이스와 amend로 정리된 히스토리는 리뷰어의 시간을 아껴줍니다. — Photo by ThisisEngineering on Unsplash

git commit –amend — 방금 커밋 고치기

커밋을 하나 만들고 나서 파일 하나를 빼먹었다는 걸 알아챈 경험, 다들 있으실 거예요. 새 커밋을 또 만드는 대신 직전 커밋에 합쳐버리면 히스토리가 훨씬 깔끔해집니다.

git add forgotten-file.ts
git commit --amend --no-edit

--no-edit는 커밋 메시지는 그대로 두고 내용만 추가하겠다는 뜻입니다. 단, 이미 원격에 푸시한 커밋을 amend하면 로컬과 원격 히스토리가 어긋나므로 이후 푸시 방식에 신경 써야 합니다.

git rebase -i — 여러 커밋을 한 번에 정리

git rebase -i HEAD~5를 실행하면 최근 5개 커밋 목록이 에디터에 열립니다. pick은 그대로 유지, reword는 메시지만 수정, squash는 이전 커밋과 합치되 메시지도 함께 정리, fixup은 합치면서 메시지는 버림, drop은 커밋 자체를 삭제합니다. “Fix typo”, “Fix validation again” 같은 커밋들을 리뷰 전에 fixup으로 정리해두면 리뷰어가 훨씬 편해집니다.

git push –force-with-lease — 안전한 강제 푸시

리베이스나 amend 뒤에는 원격 히스토리와 어긋나 git push가 거부됩니다. git push --force는 “내 로컬이 정답이니 원격을 덮어써라”는 명령이라 팀원이 그사이 올린 커밋을 통째로 날릴 위험이 있습니다. 반면 git push --force-with-lease는 원격 브랜치가 내가 마지막으로 확인한 상태 그대로일 때만 강제 푸시를 허용합니다. 공식 문서(git-scm.com)에서도 이 옵션을 --force보다 안전한 대안으로 안내합니다.

위기 대응 카드: stash, cherry-pick, reset

git stash — 급한 불부터 끄기

기능 개발 중인데 갑자기 운영 장애가 터졌다면, 지저분한 작업 중 코드를 커밋하지 않고도 git stash로 임시 보관한 뒤 git switch main으로 바로 이동할 수 있습니다. 새 파일까지 포함하려면 git stash -u, 나중에 알아보기 쉽게 이름을 붙이려면 git stash push -u -m "WIP 로그인 기능"을 권합니다.

git cherry-pick — 커밋 하나만 콕 집어오기

다른 브랜치 전체를 합칠 필요 없이 특정 커밋 하나만 필요할 때 git cherry-pick <커밋해시>를 씁니다. 예를 들어 신규 환경 설정 커밋 하나만 급하게 내 브랜치로 옮겨야 할 때 유용합니다. 다만 결과물은 새 해시를 가진 새 커밋이라는 점은 amend와 마찬가지입니다.

git reset –soft / –mixed / –hard — 되돌리는 세 가지 강도

  • –soft: 커밋만 취소하고 변경 내용은 스테이징 상태로 유지
  • –mixed(기본값): 커밋 취소 + 스테이징도 해제, 파일 내용은 보존
  • –hard: 커밋 취소 + 작업 디렉터리 내용까지 삭제. 되돌릴 수 없으니 신중하게 사용해야 합니다.

히스토리를 되돌리는 마지막 카드: reflog와 revert

git reflog — 사라진 커밋 찾기

git reset --hard를 잘못 실행해 며칠 치 작업이 git log에서 사라진 것처럼 보여도, 당황하지 마세요. Git은 HEAD가 가리켰던 위치 기록을 별도로 남기며, 공식 문서에 따르면 git reflog로 그 이동 기록을 조회할 수 있습니다. 원하는 커밋 해시를 찾았다면 git branch rescue <해시>로 임시 브랜치를 만들어 안전하게 복구하면 됩니다. 단, 한 번도 커밋되지 않은 변경 사항은 reflog로도 복구할 수 없습니다.

git revert — 이미 배포된 커밋을 안전하게 되돌리기

운영 브랜치에 올라간 커밋이 문제를 일으켰다면 git reset --hard로 히스토리를 지우는 대신 git revert <커밋해시>를 씁니다. 문제의 변경 사항을 되돌리는 새 커밋을 추가하는 방식이라, 무슨 일이 있었는지 기록이 그대로 남고 이미 배포·공유된 브랜치에서도 안전합니다.

왜 코드 리뷰와 채용 인터뷰에서 Git 실력이 드러날까

코드 리뷰 중 커밋 히스토리를 함께 살펴보는 개발팀 모습
Photo by Annie Spratt on Unsplash

후배님, 코드 리뷰에서 “커밋 좀 정리해서 다시 올려주세요”라는 코멘트를 받아본 적 있나요? 그 말의 실체는 대개 rebase -i로 fixup 정리가 안 됐다는 뜻입니다. 저도 팀원 PR을 리뷰할 때 코드 자체보다 커밋 히스토리를 먼저 훑어봅니다. “Fix”, “Fix again”, “진짜 fix”가 연달아 있으면 그 사람이 작업을 얼마나 급하게 마무리했는지 보이거든요.

기술 면접에서도 마찬가지입니다. “장애 상황에서 배포된 커밋을 어떻게 되돌리시겠어요?”라는 질문에 git reset --hard를 정답이라고 답하면 곤란해집니다. 운영 환경에서는 revert가 정답에 가깝다는 걸 아는지가, 실무 경험치를 가늠하는 기준이 되는 경우가 많습니다.

지금 당장 연습해볼 체크리스트

  • 사이드 프로젝트에서 git rebase -i HEAD~3로 최근 커밋 3개를 fixup 정리해봤는가
  • 강제 푸시가 필요할 때 --force 대신 --force-with-lease를 습관적으로 쓰는가
  • git stashgit stash pop의 차이를 설명할 수 있는가
  • reset --soft/--mixed/--hard 세 옵션의 차이를 팀원에게 설명할 수 있는가
  • 운영 브랜치 장애 상황에서 revert를 먼저 떠올리는가

다섯 개 중 두세 개만 자신 있게 답할 수 있어도, 오늘 소개한 명령어부터 사이드 프로젝트에서 하나씩 연습해보시길 권합니다. add·commit·push만큼 손에 익으면, 코드 리뷰 코멘트도 채용 인터뷰 답변도 확실히 달라집니다.

관련 글


📌 함께 보시면 좋은 글

이직·퇴사·연봉 협상을 혼자 판단하기 어렵다면
1:1 개발자 커리어 상담 신청하기 →

※ 본 글은 AI(Claude)의 초안을 기반으로 편집자 검수를 거쳐 발행되었습니다. (한국 AI기본법 대응 고지)

이직·퇴사, 지금 움직여도 될지 헷갈리시나요?

막연히 불안한 건지, 정말 시점이 온 건지 판단이 어려울 때가 있습니다.

5분 체크리스트로 지금 상태를 먼저 정리해보세요.
결론을 대신 내리기보다, 스스로 판단할 기준을 잡는 데 도움을 드립니다.

무료 체크리스트 보기

아직 확신이 없다면, 지금이 ‘고민 단계’인지부터 먼저 점검해보세요