[git]

작업중 Git 이력이 사라졌다면 당황하지 말고 reflog~


사건의 발단

열심히 하루종일 작업을 했었다. 정말 이것저것 작업을 했었다. 열심히. 퇴근 무렵 정리차원에서 rebase 작업을 하다가 일부 파일을 별도로 관리해야 할 필요성이 있어서 잠시잠깐 진행 과정을 취소하고 해당 파일을 이동하고 돌아와서 보니 어라.. 내 작업 브런치가 사라지고 없었다. 어라..?

퇴근 무렵 생긴 문제로 되살려보기 위해 혹시나 하는 마음에 이런저런 대응을 해봤지만 이미 머리가 돌아가지 않는 상황이었고, 야근을 해봐야 문제가 해결될 것 같지 않아 일단 퇴근. 다음날 좀 맑은 정신으로 접근을 했다.

  1. 로컬에서만 작업을 진행했었고 push를 하지 않았다.
  2. rebase 과정을 정리하고 push 하지 않은 채 해당 내용을 삭제했다.

이 두 가지가 문제가 아니었을까 생각된다. 기본적으로 로컬에 대한 커밋은 했었기 때문에 해당 이력만 구할 수 있다면 하루치 업무를 다시 살릴 수 있다는 생각에 이력을 확인하기 시작. 답은 reflog에 있었다.

Reflog 주문으로 죽은 자를 되살려라

아직 영혼이 살아있는 동안에 되살려야 한다.(주간 보고 하려면 이 이력이 있어야 한다고!)

1. 이력 확인

git log

우선은 이력 확인 혹시 돌아왔을까.. 역시나 목록에서 보이지 않는다..ㅠㅠ

2. reflog로 되돌아가야 할 지점의 해시 확인 후 reset

git reflog

reflog를 통해 역순으로 Git 작업을 진행한 이력을 보여준다. 돌아갈 장소를 추정하고 되돌아갈 곳을 찾는다.

원하는 곳의 해시태그를 확인하고 reset --hard <hash>작업을 통해 원하는 최종 상태로 되돌린다.

git reset --hard <hash>

3. 되돌아온 나의 브런치

다시 log를 확인하면 되돌아온 브런치를 확인할 수 있다. 이다음은 해당 브런치에 문제가 없는지 확인하고 제대로 push 해주면 마무리

git push

record 20

기술의 좋은점

Git을 사용한 건 꽤 오래되었다. 단지 혼자만 하는 작업이고 사용하던 것만 사용해도 아무런 문제가 없다 보니 있는 기능들을 다 사용할 생각 같은 건 없었을 뿐. 그러다 보니 팀작업에는 약한 부분이 있었다. 이번에 참여한 프로젝트를 통해 이것저것 익히기도 하고 도움이 되는 것 같다.

Git이 좋다는 것은 알면서도 얼마나 어떻게 좋은지는 잘 몰랐다는 것이 실상인데.. 여러 시행착오를 경험하며 좋은 기능들을 알게 되고 사용하지 않던 기능들도 사용하게 되었다. 일정 지식에 매몰되는 것만 아니라면 기술은 많이 알면 알수록 도움이 되는 것 같다. 게을리 살지 말자..