Git 커밋 취소하기: 실수를 되돌리는 두 가지 방법

oversleep·2025년 2월 15일
0

git

목록 보기
4/11
post-thumbnail

들어가며

Git을 사용하다 보면 커밋을 취소해야 하는 상황이 종종 발생합니다.
파일을 빼먹었거나, 커밋 메시지를 잘못 작성했거나, 또는 잘못된 변경사항을 커밋했을 때 우리는 이를 취소할 필요가 있습니다.

커밋 취소의 두 가지 방법

  1. Hard Reset (완전 삭제)
git reset --hard HEAD~1
  • 이 방법은 가장 최근 커밋을 완전히 삭제합니다

  • 커밋했던 모든 변경사항이 사라집니다

  • 작업 디렉토리도 이전 상태로 돌아갑니다

  • 예시:

    # 변경 전
    file.txt: "Hello World! New changes"
    
    # git reset --hard HEAD~1 실행 후
    file.txt: "Hello World!"  # 이전 상태로 완전히 복원
  1. Soft Reset (변경사항 유지)
git reset --soft HEAD~1
  • 가장 최근 커밋만 취소하고 변경사항은 유지됩니다

  • 커밋된 변경사항들이 스테이징 영역에 남아있습니다

  • 파일을 추가하거나 수정한 후 다시 커밋할 수 있습니다

  • 예시:

    # 변경 전
    file.txt: "Hello World! New changes" (커밋된 상태)
    
    # git reset --soft HEAD~1 실행 후
    file.txt: "Hello World! New changes" (스테이징된 상태)

언제 어떤 방법을 사용해야 할까?

  1. Hard Reset을 사용하는 경우

    • 실수로 잘못된 파일들을 커밋했을 때
    • 테스트 코드를 실수로 커밋했을 때
    • 이전 버전으로 완전히 돌아가고 싶을 때
    • ⚠️ 주의: 변경사항이 완전히 삭제됩니다!
  2. Soft Reset을 사용하는 경우 (권장)

    • 커밋 메시지를 수정하고 싶을 때
    • 빠진 파일을 추가하고 싶을 때
    • 변경사항은 유지하고 커밋만 다시 하고 싶을 때
    • 안전: 작업한 내용이 보존됩니다

실제 사용 예시

# 1. 파일 수정
echo "New content" > file.txt

# 2. 변경사항 스테이징
git add file.txt

# 3. 커밋
git commit -m "Add new content"

# 4-a. 완전히 삭제하고 싶을 때
git reset --hard HEAD~1  # 모든 변경사항 삭제

# 4-b. 변경사항 유지하고 커밋만 취소하고 싶을 때
git reset --soft HEAD~1  # 변경사항은 스테이징 영역에 유지

주의사항

  1. Hard reset은 복구가 불가능합니다
  2. 이미 push한 커밋을 reset하면 충돌이 발생할 수 있습니다
  3. 협업 중인 브랜치에서는 가급적 reset 사용을 피하세요
  4. 중요한 작업 전에는 반드시 브랜치를 만들어두세요

결론

대부분의 경우 --soft 옵션을 사용하는 것이 안전합니다.
변경사항을 유지한 채로 커밋만 취소할 수 있어 실수를 만회하기 쉽습니다.
--hard 옵션은 정말 필요한 경우에만 신중하게 사용하세요.

profile
궁금한 것, 했던 것, 시행착오 그리고 기억하고 싶은 것들을 기록합니다.

0개의 댓글