전체 목록
GitMedium#423

Git에서 revert와 reset의 차이점과 협업 상황에서의 선택 기준을 설명해주세요.

#Git#revert#reset#협업

답변 포인트

히스토리를 새 커밋으로 되돌릴지, 브랜치 포인터를 이동시킬지 구분해보세요.

정답 및 해설

빠른 요약

`git revert`는 특정 커밋의 변경사항을 취소하는 새 커밋을 만듭니다. 기존 히스토리는 그대로 남기 때문에 이미 원격에 공유된 커밋을 되돌릴 때 안전합니다.

git revert는 특정 커밋의 변경사항을 취소하는 새 커밋을 만듭니다. 기존 히스토리는 그대로 남기 때문에 이미 원격에 공유된 커밋을 되돌릴 때 안전합니다.

Bash
git revert a1b2c3d

반면 git reset은 현재 브랜치 포인터를 특정 커밋으로 이동합니다. 옵션에 따라 staging area와 working tree 처리 방식이 달라집니다.

  • --soft: 커밋만 되돌리고 변경사항은 staged 상태로 유지
  • --mixed: 변경사항은 남기되 unstaged 상태로 변경
  • --hard: 변경사항까지 삭제
Bash
git reset --hard HEAD~1

협업 기준은 단순합니다. 이미 push되어 다른 사람이 가져갔을 가능성이 있으면 revert가 기본입니다. reset은 로컬에서 아직 공유하지 않은 커밋을 정리할 때 적합합니다.

물론 force push가 필요한 브랜치 전략도 있지만, 공유 브랜치에서 reset 후 강제 푸시는 동료의 히스토리를 꼬이게 만들 수 있습니다. 면접에서는 “revert는 히스토리를 보존하는 취소, reset은 히스토리 위치를 다시 쓰는 도구”라고 설명하면 좋습니다.

관련 질문

같은 카테고리/태그 기준