Git Commit 내역 삭제하기
현재 branch의 commit 내역 확인. git log를 이용해 commit 내역을 살펴보면 현재 branch의 HEAD가 commit 3490... 에 있음을 알 수 있다.
git log
현재 HEAD의 commit을 삭제하고 싶다면 1 )과 같이 입력한다. HEAD^는 현재 HEAD 1개를 가리키는 것이다. 현재 HEAD를 포함해 n개의 commit을 삭제하고 싶다면 2)와 같이 입력한다.
1) git reset HEAD^
2) git reset HEAD~n
다시 git log를 확인해보면 commit이 삭제된 것을 알 수 있다. 이제 변경된 Git을 Github에 반영해보자. 아래와 같이 입력해 Github저장소에도 변경내용을 반영한다.
git push -f origin [branch]
Git Reset 되돌리기
git reset을 하며 commit을 삭제하다가 실수로 더 많은 commit을 삭제하는 경우가 존재한다. 예를 들어, HEAD가 위치한 commit을 포함한 3개의 commit을 삭제하려했는데 모르고 4개를 삭제했을때 reset을 취소해야한다. 우선, 아래와 같이 입력해 HEAD의 변경 log를 확인하자. 본인은 reset 이후 다른 commit을 해버려서 reset이 0번이 아니지만 reset을 한 직후 reflog를 확인하면 reset: 이 HEAD@{0}에 위치할 것이다
git reflog
이동할 HEAD{n}을 선택하고 다시 reset 을 이용해 되돌린다. HEAD@{2}로 이동하고 싶다면 아래와 같이 입력한다. 그럼 처음 실수로 reset을 하기 전 상태로 돌아올 것이다.
git reset --hard HEAD@{2}