Menu
Coddy logo textTech

Git Reflog

마지막 업데이트

git reflogHEAD가 가리켰던 모든 위치를 기록합니다 - 모든 커밋, checkout, reset, rebase입니다. Git은 이러한 커밋이 브랜치를 떠난 뒤에도 한동안 보관하기 때문에 reflog는 여러분의 안전망이 됩니다. reset --hard, 잘못된 rebase, 삭제된 브랜치가 없애버린 것처럼 보이는 작업을 찾아 복구할 수 있습니다.

터미널 플레이그라운드에서 이것들을 사용해 보세요 - 브라우저 안의 진짜 셸이며, 설치할 것이 없습니다.

git reflog는 HEAD가 가리켰던 모든 위치를 기록하므로, reset이나 rebase로 잃은 커밋도 찾아 복원할 수 있습니다.

구문

CommandWhat it does
git reflogHEAD의 최근 위치를 해시와 함께 표시
git reflog show <branch>브랜치의 reflog를 표시
git reset --hard HEAD@{1}HEAD를 이전 위치로 되돌림
git branch recovered <hash>잃어버린 커밋에서 브랜치를 다시 생성

실수 후 복구하기

reset 이전의 커밋을 찾아 잘못된 reset을 되돌립니다.

StepCommandResult
1git reflogreset 이전의 커밋을 찾기
2git reset --hard HEAD@{1}브랜치를 그 상태로 복원

git reflog 자주 묻는 질문

git reflog란 무엇인가요?
로컬 저장소에서 HEAD(및 각 브랜치 끝)가 가리켰던 모든 위치의 로그입니다 - 커밋, checkout, reset, merge, rebase 이후 등입니다. 커밋의 조상을 따라가는 git log와 달리 reflog는 여러분의 작업을 시간순으로 기록한 것이며, 그 점이 복구에 유용한 이유입니다.
git reset --hard 이후에 커밋을 복구하려면 어떻게 하나요?
git reflog를 실행해 reset 이전에 있던 커밋의 항목(HEAD@{1} 같은 것)을 찾은 다음, git reset --hard <that-hash>(또는 HEAD@{1})로 그곳으로 되돌아갑니다. 커밋은 실제로 삭제된 것이 아니라 - 단지 그것을 가리키는 브랜치가 없어졌을 뿐이며, reflog는 여전히 그 해시를 알고 있습니다.
삭제된 브랜치를 어떻게 복원하나요?
git reflog에서 그 브랜치의 마지막 커밋을 찾은 다음, 그곳에 브랜치를 다시 생성합니다: git branch <name> <hash>. 삭제가 최근이라면(Git의 reflog 만료 기간 내, 보통 몇 주), 커밋은 이 방법으로 여전히 접근할 수 있습니다.
git reflog는 클론 간에도 작동하나요?
아니요 - reflog는 여러분의 저장소에 로컬이며 push되거나 클론되지 않습니다. 여러분의 컴퓨터에서 일어난 작업만 기록합니다. 그래서 로컬 실수는 구할 수 있지만, 다른 클론에만 존재했던 것은 복구할 수 없습니다.
이것을 온라인으로 연습할 수 있나요?
네. 터미널 플레이그라운드를 열어 브라우저 안의 진짜 셸에서 git reflog를 실행하세요 - 설치할 것이 없습니다. Coddy의 무료 인터랙티브 Git 강좌에서도 변경 취소와 복구를 단계별로 다룹니다.
Coddy programming languages illustration

Coddy로 Git 배우기

시작하기