Git - 삭제한 branch 혹은 commit를 복구하는 방법

이번에는 삭제한 branch나 commit를 복구하는 방법에 대해서 알아보겠습니다. 개발을 하다 보면 생각지 못한 실수로 branch나 commit를 삭제하는 경우가 있습니다. 이런 경우 생각보다 어렵지 않은 방법으로 삭제한 기록을 되살릴 수 있는 방법이 있는데요. 바로 git이 제공하는 reflog를 사용하는 것입니다.

reflog로 삭제한 기록을 복구해보자.

 reflog는 참조(ref)에 대한 이력을 볼 수 있는 방법이에요. git에서 사용되는 command는 참조를 포함해서 기록되고 있기 때문에 reflog를 이용하면 git을 이용해 작업한 모든 이력을 확인할 수 있어요.

 

1. git reflog를 사용해서 시점을 찾자.

git reflog

// 추가 명령어를 이용하게 세밀하게 기록을 찾는 방법
git reflog | grep "do something"

 git reflog 명령어로 원하는 기록을 찾지 못했다면 | grep 를 추가하고 키워드를 입력해서 확인하세요.

git reflog

2-1. branch 복구

git checkout -b [branch] HEAD@[숫자]

ex) git checkout -b feat/add HEAD@4

 git reflog를 이용해 되살려야 할 시점을 확인하션다면, git checkout -b [branch] HEAD@[숫자]를 사용해서 이전 기록을 복구하세요. 사실 local에서만 작업을 하고 삭제한 branch인 경우에는 branch 이름이 없을 가능성이 높아요. 이런 경우에는 commit을 기준으로 복구하시면 됩니다.

 

2-2. commit 복구

git reset --hard [commit id]

ex) git reset --hard e9f45f04

 git의 모든 명령어는 이력이 남아 있기 때문에 branch를 기준으로 찾지 못해도 작업 내용으로 이력을 기준으로 복구하시면 됩니다. git reset --hard [commit id] 명령어를 이용해서 이전 작업을 복구하세요.

 

끝맺음

 reflog 명령어는 git으로 작업한 이력들(rebase, merge 등등)을 살펴볼 때 사용하는 명령어입니다. 다만 의도치 않게 삭제한 branch나 commit을 되살릴 때도 활용할 수 있는 명령어이기도 합니다. 작업을 하다 원치 않게 작업을 삭제해서 다시 되돌려야 한다면 git reflog를 사용해보세요. 더 자세한 설명이 필요하시다면 Git 공식 - reflog 내용이나 Bitbucket - reflog 내용을 확인해보세요.

반응형

'프로그래밍 > Git' 카테고리의 다른 글

Git - 커밋 메시지 컨벤션  (1) 2021.03.26

댓글

Designed by JB FACTORY