깃(Git) 에서 유실된 커밋(commit) 복원하기
깃(Git)을 이용하여 작업을 하다가 리베이스(rebase) 실수 또는 잘못된 명령어나 조작 실수 등 다양한 이유로 인해 자신의 피땀눈물이 담긴 커밋(commit)들을 날려먹는 경우가 은근히 있다. remote에 push해서 백업을 만들어놓고 로컬에서만 작업했으면 다시 remote 저장소에서 받아오면 되지만, 그렇지도 않은 경우에는 어떻게 이 지워진 커밋들을 다시 읽어오거나 복원할 수 있을까?
다행히도 한번이라도 commit이 된 내용이라면, 심지어 현재 보이는 git tree 상에 보이지 않는 commit들 까지도 local git repository안에 commit log들이 남아 있다. 덕분에 이를 검색해서 해당 commit 상태로 복원 할 방법이 존재한다.
git의 명령어 중에 reference logs 라는 의미를 가진 reflogs
라는 옵션을 커맨드라인에서 실행해보자.
git reflog
위 명령어가 실행되면 나오는 화면에서 저장소 tree에 일반적으로 보이지 않는 모든 commit들을 살펴볼 수 있다. 여기서 유실된 commit을 찾은 후 해당 commit의 commitID를 찾아서 상황에 맞게 다음 명령어들을 사용하면 된다.
해당 유실된 커밋을 HEAD로 하는 tree로 돌려놓으려면 아래처럼 리셋 명령어를 실행하면된다.
git reset --hard {commitID}
해당 유실된 커밋만 현재 브랜치로 가져오려면 아래처럼 체리픽을 이용한다.
git cherry-pick {commitID}
'형상관리 > Git' 카테고리의 다른 글
SourceTree를 활용한 commit 후 수정사항 되돌리기(reset) (0) | 2020.10.22 |
---|---|
SourceTree를 활용한 commit 전 수정사항 취소하기(discard) (0) | 2020.10.22 |
SourceTree를 활용한 버전 만들기(commit) (0) | 2020.10.22 |
SourceTree를 활용한 저장소 만들기(init) (0) | 2020.10.22 |
Git/SourceTree 설치 (0) | 2020.10.22 |
Git 용어 설명 (0) | 2020.10.22 |
Git/GitHub 개념 (0) | 2020.10.22 |
Git 호스팅 3대장 가성비 비교 (0) | 2020.01.14 |