2017. 7. 27. 11:48ㆍIT개발/SVN & Git
- 서론 -
작업을 하다가 실수로 commit한 소스가 사라지는 상황을 맞았다.
Oh my god! 아... git에서 우째 복구하지... 알아보니 요것이 있었군!
- 결론 -
git reflog
git reset --hard commit_id
위 두 명령어만으로 로컬에 커밋한 소스를 복구하였다.
- 본론 -
1. sourceTree 에서 터미널연다.
2. 터미널에서 git reflog 실행한다.
단, 이때 로그 상에 hexadecimal 문자인 다음과 같은 문자로 보일 시,
<EB><A1><9C><EA><B7><B8><EC><9D><B8><EC><B2><98><EB><A6><AC> <EC><99><84><EB><A3><8C>(<EA><B6><8C><ED><95><9C> <EC><A0><81><EC><9A><A9><EC><99><84><EB><A3><8C>) <EB><A9><94><EC><9D><B8><ED><8E><98><EC><9D><B4><EC><A7><80> <EC><99><84><EB><A3><8C> |
이것은 https://www.percederberg.net/tools/text_converter.html 가서 Hexadecimal-> Plain Text로 변환하면 내용을 알 수 있음
3. 복구하고픈 commit id를 복사하여 아래의 명령어를 실행한다.(제 경우는 commit id가 ccbd337 이다)
4. 터미널에서 git reset --hard ccbd337 하면, 소스가 복구된다.
5. 혹시나 모르니 안전빵으로 local branch를 생성하여 commit을 한다.
또는 곧바로 원하는 branch에 push 한다. 끝!
- 참고한 stackoverflow 사이트 내용 -
8down voteaccepted | To get back to that commit you can use the reflog to look up it's ref.
Run this command: Scan the first few entries, and find the commit that was lost. Keep track of the identifier to that commit (you can use either the 1st or 2nd columns). Let's call the identifier "ID". If you have not made any extra work since you did the reset --hard you can do: If you have made other work since the reset, you could cherry-pick if back onto your branch like this: |
'IT개발 > SVN & Git' 카테고리의 다른 글
Git remote 저장소 정보 조회 하기 (0) | 2021.07.02 |
---|---|
bitbucket 신용카드 미결재시, push 불가 (0) | 2021.02.02 |
git 원격저장소의 최신소스로 덮어쓰기(로컬소스 바이짜이찌엔) (0) | 2021.01.13 |
git 은 폴더/파일명의 대소문자를 개무시한다. 그럼 우째? (0) | 2021.01.08 |
git commit & push 된거 강제 rollback 하기(원격저장소 원복) (0) | 2017.11.24 |