GitNotes.7-1.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Section 7.1: 이전 커밋으로 되돌리기

이전 커밋으로 작업 환경을 돌리고 싶다면, 우선 git log 명령을 이용해 커밋의 해시값을 확인한다.

일시적으로 작업 환경을 해당 커밋으로 올리고 싶다면, 현재 HEAD를 아래와 같이 detach 시킨다:

git checkout 789abcd

위 명령어는 사용자의 작업 환경을 789abcd 커밋에 위치시켜 줄 것이다. 이제 사용자가 이 예전 커밋 위에 새로운 커밋을 추가하더라도, 기존 HEAD 가 가리키던 브랜치에는 아무런 영향을 미치지 않는다. 이렇게 추가된 새로운 수정 사항들은 branchcheckout -b 등의 Git 명령을 통해 정식 브랜치로 만들어질 수 있다.

현재의 변경 사항들을 유지하면서도 작업 환경을 예전 커밋으로 되돌리기를 원한다면, 아래와 같이 수행한다:

git reset --soft 789abcd

가장 마지막 커밋을 되돌리고 싶다면, 아래와 같이 수행한다:

git reset --soft HEAD~

특정 커밋 이후의 모든 변경사항들을 완전히 무효화하길 원한다면, 아래와 같이 수행한다:

git reset --hard 789abcd

마찬가지로, 이전 커밋 이후로의 모든 변경사항들을 완전히 무효화하길 원한다면, 아래와 같이 수행한다:

git reset --hard HEAD~

주의: 위와 같이 무효화시킨 커밋들은 reflogreset 을 이용하여 복구를 할 수 있지만, 커밋되지 않은 변경사항들은 복구가 아예 되지 않는다.

안전한 작업을 위해서는 git reset --hard 보다는 git stash; git reset 을 이용하는 것을 권장한다.

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형

+ Recent posts