본문 바로가기
AI 관련 정보

Git에서 이전 커밋 지점으로 되돌리는 방법 — reset, revert, checkout 차이 쉽게 이해하기

by ILoveMuMu 2026. 8. 28.
728x90
반응형

Git에서 이전 커밋 지점으로 되돌리는 방법 — reset, revert, checkout 차이 쉽게 이해하기


Git을 사용하다 보면 이런 상황이 자주 생깁니다.

“방금 수정한 코드가 더 이상해졌다.”
“AI가 여러 파일을 한꺼번에 바꿔서 프로그램이 망가졌다.”
“어제 정상적으로 작동하던 상태로 돌아가고 싶다.”

이럴 때 Git의 진짜 장점이 드러납니다.

Git에서 미리 **커밋(Commit)**을 해두었다면, 정상적으로 작동하던 이전 상태로 돌아갈 수 있습니다.

하지만 Git에는 이전 상태로 돌아가는 방법이 여러 가지입니다.

대표적으로 다음 세 가지가 있습니다.

checkout
reset
revert

이름이 비슷해 보여도 역할은 상당히 다릅니다.

초보자라면 먼저 이렇게 기억하면 됩니다.

잠깐 옛날 상태 보기 → checkout
실제로 과거 시점으로 돌아가기 → reset
이미 GitHub에 올린 작업 취소 → revert

하나씩 쉽게 알아보겠습니다.



1. 먼저 커밋 번호를 찾아야 한다

이전 상태로 돌아가려면 먼저 어느 커밋으로 돌아갈 것인지 알아야 합니다.

터미널에서 다음 명령을 입력합니다.

git log --oneline

그러면 대략 다음처럼 표시됩니다.

7fd219a 관리자 화면 디자인 수정
38e45bc 로그인 오류 수정
a1b2c3d 로그인 기능 추가
927bc31 프로젝트 초기 설정

맨 앞에 있는

7fd219a
38e45bc
a1b2c3d

같은 문자가 커밋 ID입니다.

Git에서는 이 번호를 이용해 특정 시점으로 이동할 수 있습니다.

예를 들어

a1b2c3d 로그인 기능 추가

시점의 코드가 정상적으로 작동했다면 a1b2c3d를 기억해 두면 됩니다.



2. 예전 상태를 잠깐 확인하고 싶다면

현재 코드를 없애지 않고 특정 커밋 당시의 코드를 잠깐 확인하고 싶을 수 있습니다.

이럴 때는 다음처럼 사용할 수 있습니다.

git checkout a1b2c3d

그러면 화면에 보이는 파일들이 해당 커밋 당시 상태로 바뀝니다.

하지만 중요한 점이 있습니다.

이 명령은 현재 main 브랜치를 과거로 완전히 되돌린 것이 아닙니다.

쉽게 말하면

“과거의 저장 지점을 잠깐 구경하러 간 것”

이라고 생각하면 됩니다.

확인이 끝났다면 다시 최신 main 브랜치로 돌아옵니다.

git switch main

또는 기존 방식으로는

git checkout main

을 사용할 수도 있습니다.

언제 사용하면 좋을까?

예를 들어 AI 코딩을 하다가 화면이 이상해졌는데,

“어제 커밋했을 때는 화면이 어떻게 생겼었지?”

라고 확인하고 싶다면 아주 유용합니다.



3. 정말 그 커밋 시점으로 완전히 돌아가고 싶다면

현재 작업을 버리고 이전 커밋 상태로 실제로 되돌리고 싶다면 reset을 사용할 수 있습니다.

git reset --hard a1b2c3d

이 명령을 실행하면 현재 브랜치가 a1b2c3d 커밋 시점으로 이동합니다.

예를 들어 현재 상태가 다음과 같다고 해보겠습니다.

D  관리자 페이지 추가
C  모바일 오류 수정
B  로그인 기능 추가
A  프로젝트 시작

현재 D에 있는데 B로 돌아가고 싶다면

git reset --hard B의커밋ID

를 실행합니다.

그러면 내 작업 폴더도 B 시점의 상태로 돌아갑니다.



4. reset --hard는 특히 조심해야 한다

여기에서 가장 중요한 부분입니다.

git reset --hard

의 --hard는 현재 수정 중인 파일까지 강제로 해당 커밋 상태에 맞춘다는 의미입니다.

따라서 아직 커밋하지 않은 중요한 작업이 있다면 사라질 수 있습니다.

예를 들어 2시간 동안 코드를 수정했지만 아직 커밋하지 않은 상태에서

git reset --hard a1b2c3d

를 실행하면 그 작업을 잃을 수 있습니다.

그래서 초보자라면 reset --hard를 사용하기 전에 현재 상태를 백업하는 습관을 권합니다.

가장 간단한 방법은 일단 커밋하는 것입니다.

git add .
git commit -m "현재 상태 임시 백업"

그다음 원하는 과거 시점으로 이동합니다.

git reset --hard a1b2c3d

이렇게 하면 혹시 마음이 바뀌었을 때 이전 작업을 다시 찾을 가능성이 훨씬 높아집니다.



5. 이미 GitHub에 push했다면 어떻게 해야 할까?

여기서 상황이 조금 달라집니다.

예를 들어 다음 커밋을 이미 GitHub에 올렸다고 해보겠습니다.

a1b2c3d 로그인 기능 수정

그런데 이 수정 때문에 프로그램에 문제가 생겼습니다.

이때 공개되거나 다른 사람과 공유 중인 저장소라면 무작정 reset으로 기록을 바꾸는 것보다 revert가 더 안전한 경우가 많습니다.

git revert a1b2c3d

revert는 기존 커밋을 삭제하는 것이 아닙니다.

대신

“a1b2c3d에서 했던 변경을 다시 취소하는 새로운 커밋”

을 만듭니다.

Git 기록으로 보면 대략 이런 형태가 됩니다.

A 프로젝트 시작
B 로그인 기능 추가
C 로그인 기능 수정
D C의 변경 내용 취소

C를 없애버리는 것이 아니라 D라는 새로운 기록을 추가하는 방식입니다.



6. reset과 revert는 무엇이 다를까?

이 부분을 이해하면 Git 복구가 훨씬 쉬워집니다.

reset

과거 커밋 시점으로 브랜치의 위치 자체를 이동합니다.

git reset --hard a1b2c3d

쉽게 표현하면

“그 이후의 작업은 없었던 것처럼 여기고 여기로 돌아가자.”

에 가깝습니다.

개인 작업이나 아직 GitHub에 push하지 않은 작업을 되돌릴 때 유용합니다.



revert

기존 기록은 그대로 두고 잘못된 변경을 취소하는 새 기록을 추가합니다.

git revert a1b2c3d

쉽게 표현하면

“이 작업을 했던 기록은 남겨두되, 변경 내용만 다시 원래대로 돌리자.”

입니다.

그래서 이미 GitHub에 push했거나 여러 사람이 함께 작업하는 프로젝트에서는 revert가 훨씬 안전한 경우가 많습니다.



7. 초보자는 이렇게 판단하면 쉽다

상황별로 정리하면 다음과 같습니다.

예전 상태가 어떻게 생겼는지 확인만 하고 싶다

git checkout 커밋ID

확인 후 다시 돌아오기:

git switch main



AI가 코드를 망가뜨렸고 이전 커밋으로 완전히 돌아가고 싶다

아직 GitHub에 push하지 않았다면:

git log --oneline

돌아갈 커밋 번호를 찾고

git reset --hard 커밋ID

를 사용할 수 있습니다.

단, 현재 작업이 사라질 수 있으므로 주의해야 합니다.



이미 GitHub에 push한 작업을 취소하고 싶다

git revert 커밋ID

를 사용하는 것이 일반적으로 더 안전합니다.



8. AI 코딩에서는 Git 커밋이 특히 중요하다

Codex, Claude Code, Cursor 같은 AI 코딩 도구는 한 번의 요청으로 여러 파일을 동시에 수정할 수 있습니다.

예를 들어

“로그인 화면을 모바일에서도 잘 보이게 수정해줘.”

라고 요청했는데 AI가

Login.tsx
App.tsx
style.css
auth.ts
config.ts

같은 여러 파일을 한꺼번에 수정할 수도 있습니다.

결과가 잘 나오면 문제가 없습니다.

하지만 프로그램이 갑자기 실행되지 않는다면 이전 상태로 되돌리는 일이 꽤 복잡해집니다.

이때 정상 작동하던 시점에 커밋을 해두었다면 간단합니다.

예를 들어:

git add .
git commit -m "로그인 기능 정상 작동"

그다음 AI에게 새로운 수정을 맡깁니다.

문제가 발생했다면 커밋 기록을 확인합니다.

git log --oneline

그리고 필요한 경우 이전 상태로 돌아갈 수 있습니다.

git reset --hard 커밋ID

즉, AI 코딩에서 Git 커밋은 단순한 작업 기록이 아닙니다.

언제든 돌아갈 수 있는 안전 저장 지점 역할을 합니다.



9. 게임의 세이브 포인트라고 생각하면 쉽다

Git을 게임에 비유하면 이해하기 쉽습니다.

게임을 하면서 보스전을 앞두고 저장한다고 생각해보겠습니다.

SAVE 1 : 게임 시작
SAVE 2 : 장비 획득
SAVE 3 : 보스전 직전
SAVE 4 : 보스전 이후

SAVE 4에서 게임 진행이 잘못됐다면 SAVE 3으로 돌아갈 수 있습니다.

Git도 비슷합니다.

commit 1 : 프로젝트 시작
commit 2 : 로그인 완성
commit 3 : 모바일 화면 완성
commit 4 : 관리자 화면 수정

commit 4에서 문제가 발생했다면 commit 3 시점으로 돌아갈 수 있습니다.

그래서 Git 커밋을 자주 해두면

“AI가 코드를 망가뜨리면 어떡하지?”

라는 부담이 상당히 줄어듭니다.



10. 이것만 기억하면 된다

Git에서 이전 커밋으로 돌아가는 방법을 모두 외울 필요는 없습니다.

초보자는 우선 세 가지 정도만 구분하면 됩니다.

과거 코드 확인

git checkout 커밋ID

과거 상태로 실제 복구

git reset --hard 커밋ID

이미 공유한 커밋 취소

git revert 커밋ID

그리고 가장 중요한 명령은 이것입니다.

git log --oneline

먼저 이 명령으로 내가 돌아가고 싶은 커밋 ID를 찾는 것부터 시작합니다.

마지막으로 한 줄로 정리하면,

checkout은 과거를 구경하는 것, reset은 과거로 돌아가는 것, revert는 잘못한 일을 기록을 남긴 채 취소하는 것입니다.

특히 Codex 같은 AI 코딩 도구를 사용한다면 큰 기능을 수정하기 전에 커밋을 하나 만들어 두는 습관을 들이는 것이 좋습니다.

git add .
git commit -m "현재 정상 상태 저장"

이 한 번의 커밋이 나중에 문제가 발생했을 때 가장 빠르고 안전한 복구 지점이 될 수 있습니다.

728x90
반응형