커밋을 삭제하는 방법에는 여러 가지가 있다.
삭제하고자 하는 커밋이 직전 커밋인 경우에는 git reset 명령어로 간단하게 롤백이 가능하다.
# git reset HEAD~1 # 최근 1개의 커밋 삭제 + 변경된 파일은 unstaging 상태로 유지
# git reset HEAD~n # 최근 n개의 커밋 삭제 + 변경된 파일은 unstaging 상태로 유지
# git reset --hard HEAD~1 # 최근 1개의 커밋 삭제 + 변경된 파일도 함께 되돌림
# git reset --hard HEAD~n # 최근 n개의 커밋 삭제 + 변경된 파일도 함께 되돌림
# git reset --hard [커밋ID]~n # 해당 커밋 ID 기준 n개의 커밋 삭제 + 변경된 파일도 함께 되돌림
만약 예전에 했던 커밋을 삭제하고자 하는 경우에는 git rebase 명령어를 사용하면 된다.
# git rebase -i HEAD~n # 직전으로부터 n개의 커밋을 rebase
(위 명령어 실행 후 삭제하고자 하는 커밋의 pick을 drop으로 변경 후 저장하면 삭제 가능)
하지만 삭제하고자 하는 커밋이 첫 커밋인 경우, 위 두 방법을 이용한 커밋 삭제가 불가능하다.
아래와 같이 HEAD가 애매한 인자라는 오류 메시지가 표출되기 때문이다.
이니셜 커밋을 삭제하고자 하는 경우에는 다음과 같은 명령어로 삭제가 가능하다.
# git update-ref -d HEAD
# git rm --cached -rf .
'기타 > Git' 카테고리의 다른 글
Git - 커밋 메시지에 #이슈번호 추가 (0) | 2022.10.31 |
---|---|
Github - 레포지토리 복사 (0) | 2021.11.02 |