[Git] Commit 제거하기

2023. 10. 5. 14:07·git

Commit 내역 확인


Commit을 제거하기 위해 먼저 Commit 내역을 확인해야 한다. 아래 명령어를 이용해 Commit 내역을 확인할 수 있고, 로컬과 원격 브랜치의 HEAD가 해시값이 e138932인 Commit에 위치함을 확인할 수 있다.

$ git log

 

 

로컬 브랜치의 Commit 되돌리기


Commit을 제거하기 위해서는 먼저 현재 HEAD의 위치를 옮겨야 한다. 아래 명령어를 통해 로컬 브랜치의 HEAD를 이전 Commit으로 되돌릴 수 있다. 현재 위치한 HEAD에서 1개의 Commit만 되돌리고 싶다면 ^를 사용하면 되고 현재 HEAD가 위치한 Commit을 포함해 n개의 Commit을 되돌리고 싶으면 ~{n}를 사용하면 된다. 아래 명령어를 활용해 1개의 Commit을 되돌린 후 로컬 브랜치의 HEAD가 해시값이 981c0f3인 Commit으로 이동했다. 원격 브랜치의 HEAD는 아직 해시값이 e138932인 Commit에 위치하고 있을 것이다.

$ git reset HEAD^
$ git reset HEAD~{n}

 

 

원격 브랜치의 Commit 되돌리기


로컬 브랜치의 HEAD를 이전 Commit으로 되돌렸으니 이제 로컬 브랜치의 변경사항을 원격 브랜치에 반영하면 된다. push 명령어를 실행하면 로컬 브랜치의 HEAD가 원격 브랜치보다 뒤에 있어 Fast-Forward를 준수하지 않기 때문에 거절 당한다. Commit을 되돌리는 작업이기 때문에 Fast-Forward 예외가 발생하는 것이 당연하다. 이를 해결하기 위해 force 옵션을 추가해 push 명령어를 실행하면 된다.

$ git push -f

 

로컬 브랜치의 변경사항을 원격 브랜치에 반영 후 다시 Commit 내역을 확인한 결과는 아래와 같다. 로컬과 원격 브랜치의 HEAD가 모두 해시값이 981c0f5에 위치하고 있는것을 확인할 수 있다. 삭제한 Commit은 되돌릴 수 없으니 주의하도록 하자.

 

 

되돌린 Commit 복구하기


Commit을 제거하기 위해 reset 명령어를 실행하다가 실수로 의도하지 않은 Commit으로 HEAD의 위치를 변경했을때, HEAD의 위치를 원래 위치로 되돌리는 방법은 원격 브랜치의 작업 내용을 가져오는 pull 명령어를 사용하는 것이다. 그러기 위해서 먼저 로컬 브랜치의 HEAD위치를 이전 Commit으로 되돌리면서 생긴 변경사항을 초기화 해야한다. 그런 다음 로컬 브랜치의 HEAD를 원격 브랜치의 HEAD로 다시 옮긴다. 복구 후 Commit 내역을 확인하면 HEAD가 원래 위치로 돌아와있음을 확인할 수 있다.

$ git stash
$ git pull origin master

저작자표시 (새창열림)
'git' 카테고리의 다른 글
  • [Git] 특정 Commit 기준 Branch 생성
  • [Git] Git Stash 사용하기
Jisung Jung
Jisung Jung
Jisung Jung의 기술블로그
  • Jisung Jung
    Jisung Jung의 기술블로그
    Jisung Jung
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • spring, jpa (14)
      • java (7)
      • go (3)
      • kafka (3)
      • network (1)
      • algorithm (11)
      • data structure (3)
      • database, sql (7)
      • infra (7)
      • bootcamp (6)
      • git (3)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Jisung Jung
[Git] Commit 제거하기
상단으로

티스토리툴바