본문 바로가기
Git & GitHub

Git에서 과거로 돌아가는 두 방식 / 커밋 삭제

by danny-j 2022. 11. 22.

RESET vs REVERT

  • reset -- 원하는 시점으로 돌아간 뒤 이후 내역들을 삭제 (파일의 생성, 수정, 삭제 모두 과거로)
    • 명령어 -- git reset --hard (돌아갈 커밋 hash code)
    • 뒤에 커밋 hash code가 없으면 마지막 커밋을 가리킴
    • history도 같이 삭제
  • revert -- 되돌리기 원하는 시점의 커밋(취소할 커밋)만 거꾸로 실행
    • 명령어 -- git revert (되돌릴 커밋 hash code)
      • history에 취소한 내역 추가
    • 명령어 -- git revert --no-commit (되돌릴 커밋 hash code)
      • 커밋 되돌리고 add까지만

 

REBASE

 

 

  • 브랜치 병합 전략 중 하나
  • 원래 용도는 브랜치 병합이지만 특정 commit 내역 수정/삭제 할 때도 사용됨
  • 브랜치의 공통 조상이 되는 base를 다른 브랜치의 커밋 지점으로 바꾸는 것
  • 이미 공개해서 사람들이 사용하는 커밋을 Rebase하면 반드시 문제가 생김
  • rebase는 기록(commit)을 변경하며, merge는 기록을 있는 그대로 사용

 

삭제할 커밋 hash code 확인

  • 1번째와 3번째 커밋 삭제하기
  • hash code는 앞 5자리 정도만 알아도 됨

 

git rebase  -i HEAD~3

  • 수정할 commit을 HEAD 기준 3개를 에디터로 열기
  • git rebase -i (hash code) -- 특정 커밋만 호출 가능

 

pick -> drop

  • 삭제할 커밋의 hash code앞에 붙은 pick을 drop으로 바꿔줌
  • pick에서 drop대신 reword를 쓰면 커밋 메시지도 변경 가능

 

결과

Success

 

참고 - https://www.atlassian.com/ko/git/tutorials/undoing-changes

'Git & GitHub' 카테고리의 다른 글

Git Branch 합치기 실습  (0) 2022.11.24
Git Branch  (0) 2022.11.22
.gitignore  (0) 2022.11.22
GUI / CLI  (0) 2022.11.18
Git Source Tree 활용  (0) 2022.11.17

댓글