[git] log / reset / revert

-·7일 전

github

목록 보기
5/6

커밋을 잘못했을 때 확인하고, 취소(삭제)하는 방법


1. 커밋 내역 확인하는 방법 (로그 보기)

내가 뭘 잘못했는지, 돌아갈 지점이 어디인지 확인.

git log --oneline
  • --oneline: 복잡한 정보 빼고 "커밋ID + 메시지"만 한 줄로 깔끔하게 보여줍니다.

[출력 예시]

a1b2c3d (HEAD -> main) 실수로 비밀번호 올림  <-- 방금 한 실수 (삭제하고 싶음)
e5f6g7h 기능 A 구현 완료                    <-- 여기로 돌아가고 싶음
i9j0k1l 초기 세팅
  • 맨 위에 있는 게 가장 최신 커밋.

2. 커밋 삭제(취소)하는 방법

상황에 따라 두 가지 방법 중 하나를 골라 쓰면 됨.

상황 A: "방금 내 컴퓨터에서만 커밋했고, 아직 GitHub엔 안 올렸어" (Reset)

  • 가장 흔한 경우.
  • reset을 씁니다.
  1. 파일은 살려두기 (추천): "커밋만 취소하고, 작성한 코드는 수정해서 다시 쓰고 싶어."

    git reset --soft HEAD~1
    • HEAD~1: 현재(HEAD)에서 1칸 뒤로 가겠다.
    • --soft: 커밋 기록은 지우지만, 파일 내용은 지우지 않고 장바구니(Staging) 상태로 둠. (오타 수정 후 다시 커밋할 때 사용)
  2. 완전 삭제 (주의⚠️): "그냥 방금 짠 코드 꼴도 보기 싫어. 싹 다 날려줘."

    git reset --hard HEAD~1
    • --hard: 커밋 기록도 지우고, 작성했던 코드 파일도 깨끗하게 지워버림. (복구 불가능하니 주의!)

상황 B: "이미 GitHub(Origin)에도 Push 해버렸어" (Revert)

이미 push를 해서 팀원들도 볼 수 있는 상태라면, reset으로 몰래 기록을 지우면 족보가 꼬여서 큰일 남.

이때는 "실수를 인정하는 새로운 커밋"을 덮어씌워서 해결.

  • 이것을 revert라고 함.
# 1. 취소하고 싶은 커밋 ID를 확인 (git log --oneline)
# 예: a1b2c3d

# 2. 해당 커밋의 정반대 행동을 하는 커밋 생성
git revert a1b2c3d
  • 이 명령어를 치면 에디터가 뜨는데, 그냥 저장하고 나오면(:wq) 됨.
  • 결과: "실수로 비밀번호 올림" 커밋은 그대로 남지만, 그 위에 "Revert '실수로 비밀번호 올림'"이라는 새 커밋이 생기면서 코드는 원상 복구됩니다.
  • 그 후 git push origin [브랜치명] 하시면 됩니다.

3. 요약

  1. 확인한다:
    git log --oneline
  2. 아직 안 올렸으면 (내 컴퓨터):
    git reset --soft HEAD~1 (코드 살림)
  3. 이미 올렸으면 (GitHub):
    git revert [커밋ID] (취소 커밋 생성)
profile
살아남은 자가 강한 것

0개의 댓글