Git - reset, revert 설명
Git, Svn 과 같은 형상 관리 툴을 통한 프로젝트 진행 중에는 항상 예기치 못한 다양한 변수들이
발생하는 경우가 많습니다.
그 중 가장 중요한 태스크는 바로 이력관리입니다. Svn과 다르게 초반에는 Git은 이력 되돌리기(복구)가
까다롭게 느껴지는 분들이 많은 것 같습니다. 저 역시 고생좀 했던 기억이 있네요.
오늘은 Reset 사용법에 대해서 간단하게 포스팅하려고 합니다. 이번 기회에 Reset vs Revert의
차이점을 더 명확하게 알아두시면 Git을 원활하게 사용하실 수 있을겁니다.
그럼 시작해 보겠습니다.
Git 설치 방법은 이전 포스팅 참고 : Git 다운로드 및 설치
Git 변경 이력 확인 & Head 재설정
아래와 같은 Reset 명령어로 지정한 이력으로 돌아갈(undoing) 수 있습니다.
자세한 Reset 옵션은 하단에 설명합니다.
Reset --hard : 복구 된 이력 이후의 내용을 모두 삭제 후 초기화 (주의)
Reset --Soft : 복구 된 이력 이후 내용 모두 유지
Reset --mixed : 복구 된 이력 이후 내용 모두 유지, 그러나 인덱스 초기화 즉, 변경 내용 다시 추가해야함.
# git 로그 확인
git log
# git 로그 코드 정리
git log --pretty=online
# git Head 변경 이력 확인
git reflog
# git reset으로 commit 복원
git reset --hard "CommitID"
# git reset으로 head 복원(현재부터 6개 이전으로 복원)
git reset HEAD~6
# git revert으로 commit 복원
git revert "CommitID"
반대로 Revert는 상태를 되돌리지만(undo) 이전 이력은 그대로 보존합니다.
Reset 후 이력과 Revert 사용 이후의 이력을 비교해 보면 서로 같지 않습니다.
따라사 기능을 정확하게 숙지해서 조건에 맞게 사용하는 것이 중요합니다.
아래 그림을 참고하시면 쉽게 이해가 되실 겁니다. - 출처
Git Reset 실행 화면
실제로 windows10 에서 테스트한 화면이며, 문제없이 잘 복원되고 있습니다.
마무리
Reset 과 Revert 사이에는 미세하지만, 중요한 차이점이 있습니다.
주로 한 단계 이전으로 돌아가고 내부적으로 새로운 커밋(commit)을 발행하는 Revert가
좀 더 안전한 방법이라 생각할 수도 있습니다.
즉, 롤백(rollback) 이력도 남기는 것이지요.
반대로 Reset은 최근의 커밋을 작업트리(head)까지 버리고 롤백하는 기능이라 생각하시면
될 것같습니다.
물론, 위에서 설명한 옵션에 따라서 다양한 시점으로 복귀 할 수 있습니다.
여러 다양한 개발자들과 협업을 통해서 프로젝트를 완성해 간다는 것은 정말 좋은 경험이라
생각하고 있습니다.
즉, 실제 커뮤니케이션도 중요하지만, 소스코드를 통해서 대화하는 것을 바로 이러한 형상관리
도구 들이 서포트 해주는 것이라는 생각이 듭니다.
다음에도 Git에 관한 다양한 정보를 포스팅 하겠습니다.
참고문헌
Git reset, revert 관련 레퍼런스(Reference) : 이동
'개발도구 > Git' 카테고리의 다른 글
Git - 캐시(Cache) 삭제 방법 및 상세 설명 (2) | 2018.02.24 |
---|---|
Git - 맥(Mac OS X) 버전 설치 및 기본 설정 (0) | 2017.09.05 |
Git - 윈도우(windows) 버전 설치 및 기본 설정 (0) | 2017.09.04 |