아... git에 익숙하지 않아서
프로젝트 하는 도중에 poll을 하거나 push를 할 때 코드가 날라가서 난감한 경우... -_-;;
지난번에 한번 찾아서 알아뒀었는데...
오늘 마침 또 코드가 없어져서 복구하고나서 기록으로 납깁니다.
그동안에 git-svn bridge로 인해서 생기는 일인줄 알았는데...
그게 아니더라구요.
무지로 인해서 이런 경우에 매일매일 다시 짰었는데... -_-;;
이렇게 고생한 제가 다 부끄러워지네요... ㅡㅡ;
poll을 하거나 push를 하다가 conflict가 나거나 그 이외에 rebase를 할일이 생겼을 때
분명 local git에 commit을 했는데도 코드가 없어졌거나 git timeline에서 사라졌을 때!!!
reflog라는 좋은 기능이 있어요.. -_-;;
현재 맥에서 git client로 SourceTree를 사용중인데요.
SourceTree의 공식 트위터에서는 reflog가 어려운 작업이기 때문에 좀더 기다려달라는 트윗이 있네요;;
(https://twitter.com/sourcetree/status/169481814400970752 참고하세요~)
어쨌든....
local git에 commit한 상태에서 timeline에서 지금까지 작업한 코드가 날라갔다!!!
그럼 주저없이 현재 작업 중인 프로젝트를 terminal로 열어재낍니다!!!
물론 현재 작업 중인 workspace로 checkout 시킵니다. -_-;;
git checkout {작업중인 workspace 이름}
git reflog
이렇게 하면 아래와 같은 log를 볼 수 있습니다.
c62487c HEAD@{52}: reset: moving to refs/remotes/trunk
74f5003 HEAD@{53}: commit: [no-bts] 설정 push 관련 디자인 적용.
02c1491 HEAD@{54}: reset: moving to refs/remotes/trunk
236d8af HEAD@{55}: commit: [no-bts] Entitlement 수정.
d7764a6 HEAD@{56}: checkout: moving from 1.0.0_local to master
이중에서 앞쪽에 볼드 처리 된 hashcode가 있습니다.
이걸 그대로 복사 합니다.
그리고
git reset -hard {복사한 hashcode}
그리고나서 timeline을 보면???
복구되어 있네요??
그대로 push를 하시면 됩니다. -_-;;;
아... 이거 부끄러워집니다. ㅠㅠ
참고 : http://effectif.com/git/recovering-lost-git-commits