taks별로 깃허브에 push 하며 개인과제를 하던 중, 최신 커밋의 메세지를 잘못 작성한 것을 확인했다.
팀업이라면 revert를 사용했을 테지만, 개인 학습에 사용하는 만큼 삭제기록 없이 깔끔하게 만들고 싶어 reset을 사용하려고 했다.
그런데 이전에 간단히 정리한 reset 사용방법으로는 일일히 커밋 해시를 찾아서 넣어줘야 해서, 더 간단히 할 수 있는 방법이 있지 않을까 싶어 찾아보았다.
https://g-vieve.tistory.com/19
04. 커밋 되돌리기 (reset, revert)
reset : 원하는 시점으로 돌아간 뒤 이후 내역들을 지운다.revert : 되돌리기 원하는 시점의 커밋을 거꾸로 실행한다.1. reset : 원하는 시점(커밋)으로 되돌아가므로 돌아온 시점 이후 커밋은 삭제된
g-vieve.tistory.com
1. Git 최신 커밋 삭제하기
[ Git에서 최신 커밋을 삭제 ]
1) reset + 최신 커밋 해시.
2) reset + HEAD
git reset (최신 커밋 해시)
git reset HEAD~
git reset HEAD~1
git reset HEAD^
이때 2)에서 HEAD뒤에 ~, ~1, ^가 올 수 있는데 모두 최신 커밋 하나를 삭제하므로 어느 것을 사용해도 상관없다.
[ 최신 커밋 하나가 아닌 여러개의 커밋을 취소할 때 ]
1)에서 최신 커밋 대신 돌아가길 원하는 커밋 해시를 넣고,
2)에서 HEAD~ 뒤에 삭제할 커밋 개수를 작성한다.
git reset (돌아갈 커밋 해시)
git reset HEAD~(삭제할 커밋 개수)
# Ex) 최신 3개 커밋 삭제
git reset HEAD~3
[ 커밋 삭제 시 삭제 시점 지정 ]
Git의 커밋은 변경사항생성 -> add -> commit 과정을 거치게 된다.
위의 커밋 삭제 방법은 기본적으로 변경사항이 생긴 이후 시점으로 되돌린다.
이때 옵션을 더해준다면 변경사항까지 되돌릴 수도, 커밋 직전까지만 되돌릴 수도 있다.
# 커밋만 삭제(변경사항과 add 그대로)
git reset --soft HEAD~
# add까지 삭제(변경사항만 그대로)
git reset HEAD~
# 변경사항까지 완전 초기화(변경사항, add, 커밋 전부 삭제)
git reset --hard HEAD~
2. Github 커밋 삭제하기
이제 git에서 commit은 삭제했으니 다음은 Github에 push 된 커밋을 삭제해야 한다.
이때, git에서 삭제한 상태를 Github에 push하면 간단히 완료된다.(새 커밋 히스토리가 반영된다)
git push -f origin main
여기서 origin main은 생략해도 가능하다.
위 방법은 기록을 남기지 않는 만큼 팀 프로젝트 중이라면 주의해야 한다.
'Git&GitHub' 카테고리의 다른 글
[Git] git - github 연동 email 관련 에러 (0) | 2024.07.03 |
---|---|
[Git] 06. branch 병합 (merge, rebase) (0) | 2024.07.01 |
[Git] 05. branch 생성/이동/삭제 (0) | 2024.07.01 |
[Git] 04. 커밋 되돌리기 (reset, revert) (0) | 2024.07.01 |
[Git] 03. 커밋(Commit) 기초 (0) | 2024.07.01 |