git reset 명령어
git reset 명령어는 쉽게 말해 커밋을 취소하는 명령어입니다. 현재 작업 위치인 HEAD의 포인터(Staging Area)에 머물러 있는)를 특정 위치(보통 직전의 커밋 위치)로 되돌릴 수 있습니다.
git reset을 좀 더 정확히 이해하려면 먼저 다음의 세 가지 트리(Tree)를 알면 이해가 빠릅니다.
1. 작업 디렉토리(Work Directory)
2. Staging Area
3. 커밋된 저장소(Storage)
이것과 관련된 내용은 이전 포스팅인 'git diff'명령어에서 한번 다뤘으니 참고하시면 이해가 빠르실 겁니다.
git reset 명령어 예제
git reset --hard
--hard 옵션을 사용하면, 현재 브랜치를 가리키는 포인터인 HEAD가 가리키는 커밋을 특정 위치로 변경해 버립니다.
방금 올린 커밋을 취소하고 싶은 상황이라면 git reset --hard으로 이전 커밋이나 특정 커밋으로 변경이 가능합니다.
예로 a254e22 -> 33a9815 -> 824f87d 순서로 커밋했다고 가정해봅시다.
git log --online
824f87d (HEAD -> main) Add ThisIsaFile
33a9815 Add .gitmessage
a254e22 commit-msg
이 경우 마지막 커밋인 824f87d를 취소하고 싶을 때 git reset --hard <commit_id> 사용하시면 됩니다.
$git reset --hard 33a9815
이후 제대로 취소가 되었는지 확인하고 싶다면 git log -> git status로 확인이 가능합니다.
$git log --online
33a9815 (HEAD -> main) Add .gitmessage
97f1e31 commit-msg
$git status
On branch main
nothing to commit, working tree clean
바로 직전의 commit으로 되돌릴 경우라면, 직전 commit id를 입력하는 대신 HEAD^ 나 HEAD~1과 같은 옵션도 사용이 가능합니다.
git reset --hard HEAD^
하지만 이 경우는 바로 직전에 커밋 상태로 되돌리는 의도로만 동작이 되기에 사용상 주의가 필요합니다.
'Linux & GIT' 카테고리의 다른 글
깃허브(GitHub) 저장소 삭제 방법 (0) | 2022.09.06 |
---|---|
git revert 명령어 (0) | 2022.07.20 |
git clean 명령어 사용법 (0) | 2022.07.19 |
git diff 명령어 사용 방법 정리 (0) | 2022.07.18 |
git commit message 잘못 입력시 복구 방법 (0) | 2021.12.03 |
댓글