Git Reflog 및 기록 복구
`git reflog`를 익혀 손실된 커밋이나 브랜치를 복구하고 작업을 위한 안전망을 마련하세요.
Git Reflog 및 기록 복구은(는) CoddyKit의 무료 Git & GitHub Professional Workflow 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Git & GitHub Professional Workflow 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Git & GitHub Professional Workflow 강의에는 총 4개의 강의가 포함되어 있습니다.
Git Reflog란 무엇인가요?
실수로 브랜치를 삭제했거나 잘못된 커밋으로 재설정한 적이 있으신가요? 당황하지 마세요! Git에는 Reflog라는 강력한 안전장치가 있습니다.
reflog(참조 로그)는 사용자의 로컬 저장소에서 HEAD와 브랜치 포인터가 가리켰던 위치를 기록한 것입니다.
Reflog가 이력을 추적하는 방식
프로젝트 파일의 변경 사항을 추적하는 커밋 이력(git log)과 달리, reflog는 저장소의 참조 변경 사항을 추적합니다.
HEAD(현재 커밋) 또는 브랜치 포인터가 이동할 때마다 Git은 이 이벤트를 reflog에 기록합니다. 여기에는 다음이 포함됩니다.
- 변경 사항 커밋
- 브랜치 전환
- 병합 또는 리베이스
- 재설정 수행
- 저장소 복제
Reflog 보기
reflog를 확인하려면 git reflog 명령을 사용하면 됩니다. 이 명령은 작업 목록과 당시의 HEAD 상태를 보여 줍니다.
몇 가지 작업을 시뮬레이션한 다음 reflog를 확인해 보겠습니다.
git init my_repo
cd my_repo
echo "First line" > file.txt
git add file.txt
git commit -m "Initial commit"
echo "Second line" >> file.txt
git add file.txt
git commit -m "Add second line"
git reflogReflog 항목 해석하기
각 reflog 항목에는 정해진 형식이 있습니다. 다음과 같이 표시되는 일반적인 항목을 자세히 살펴보겠습니다.
a1b2c3d HEAD@{0}: commit: Add new feature
a1b2c3d: 당시HEAD가 가리키던 커밋의 SHA-1 해시입니다.HEAD@{0}: "reflog 항목 포인터"입니다.@{0}은 가장 최근 상태이고,@{1}은 그 직전 상태이며, 이후에도 같은 방식으로 이어집니다.commit: Add new feature:HEAD를 이동시킨 작업에 대한 설명입니다.
이 포인터는 복구에 매우 중요합니다!
상황: 잃어버린 커밋 복구하기
커밋을 만든 다음 실수로 git reset --soft HEAD~1을 사용해 실행 취소했다고 가정해 보겠습니다. 이제 해당 커밋은 현재 브랜치 이력에 없지만, 완전히 사라진 것은 아닙니다!
reflog가 해당 커밋을 기억하고 있습니다. 이처럼 흔한 실수를 시뮬레이션해 보겠습니다.
git init my_project_recovery
cd my_project_recovery
echo "Initial content" > start.txt
git add start.txt
git commit -m "Initial commit"
echo "Important feature" > feature.txt
git add feature.txt
git commit -m "Added an important feature"
# Oops! Accidentally reset
git reset --soft HEAD~1
git reflog커밋 되살리기
재설정한 후 git reflog를 실행하면 "Added an important feature" 커밋에 대한 항목이 HEAD@{1} 또는 이와 비슷한 형태로 표시됩니다.
이를 복구하려면 reflog 항목과 함께 git reset을 사용할 수 있습니다. 예를 들어 잃어버린 커밋의 해시가 abcdefg이거나 reflog 항목이 HEAD@{1}이라면 다음과 같이 할 수 있습니다.
# Assuming the lost commit was HEAD@{1} in the reflog
git reset --hard HEAD@{1}
# Or using the specific commit hash from reflog
# git reset --hard abcdefg
# Now, check your log. The commit is back!
git log --oneline상황: 삭제한 브랜치 가져오기
브랜치를 병합하기 전에 실수로 브랜치 전체를 삭제했거나 더 이상 필요하지 않다고 생각했다면 어떻게 해야 할까요?
브랜치는 커밋을 가리키는 포인터일 뿐입니다. 브랜치를 삭제해도 해당 브랜치가 가리키던 커밋이 저장소에서 즉시 제거되지는 않습니다. reflog에는 여전히 해당 브랜치의 HEAD가 가리키던 위치가 기록되어 있습니다!
Reflog에서 브랜치 복원하기
feature-x라는 브랜치에서 작업한 다음 git branch -D feature-x로 삭제했다고 가정해 보겠습니다.
git reflog를 실행하면 다음과 같은 항목이 표시될 수 있습니다.
1234567 HEAD@{5}: branch: Created branch feature-x 또는abcdefg HEAD@{2}: checkout: moving from feature-x to master
브랜치가 활성 상태였던 reflog 항목에서 커밋 해시(예: 1234567 또는 abcdefg)를 사용하면 해당 브랜치를 다시 만들 수 있습니다.
# Assume 'feature-x' was deleted and its last commit was '1234567'
# Create a new branch pointing to that commit
git branch feature-x-recovered 1234567
# Now, check out your recovered branch
git checkout feature-x-recovered
# Verify its history
git log --onelineReflog 항목의 만료
reflog는 강력한 안전장치이지만 항목이 영원히 유지되지는 않습니다. Git은 일정 기간이 지나면 오래된 reflog 항목을 정리합니다.
- 기본적으로 현재
HEAD에서 도달 가능한 항목은 90일 후에 만료됩니다. - 도달할 수 없는 항목(예: 삭제한 브랜치에서 비롯되었거나 더 이상 참조되지 않는 커밋)은 30일 후에 만료됩니다.
따라서 "잃어버린" 작업은 나중보다 가능한 한 빨리 복구하는 것이 좋습니다!
Reflog 복구 도전 과제
새 기능 브랜치를 만들고 여러 커밋을 만든 다음, 병합하지 않은 상태에서 실수로 브랜치를 삭제했다고 가정해 보겠습니다. git reflog를 실행하면 다음 항목이 표시됩니다.
...
c0ffee1 HEAD@{3}: commit: Implement new user profile page
bada55e HEAD@{4}: checkout: moving from feature/profile to main
...삭제하기 전에 feature/profile 브랜치가 가리키던 가장 최근 커밋을 가리키도록 브랜치를 다시 만드는 올바른 명령 순서는 무엇인가요?
Reflog: Git의 안전장치
이제 로컬 Git 저장소에서 "잃어버린" 작업을 복구하는 데 중요한 도구인 git reflog를 익혔습니다. 다음 내용을 기억하세요.
HEAD와 브랜치 포인터가 가리켰던 위치를 추적합니다.git reflog를 사용해 이 기록을 확인할 수 있습니다.- reflog 항목(
HEAD@{n}또는 커밋 해시)을 사용해git reset이나git branch로 커밋 또는 브랜치를 복구할 수 있습니다. - reflog 항목은 만료되므로 무언가를 복구해야 한다면 신속하게 작업하세요!
Git 이력은 깔끔하게 관리하되, 긴급 상황에 reflog를 사용할 수 있다는 점을 기억하세요!
자주 묻는 질문
“Git Reflog 및 기록 복구” 강의는 무료인가요?
네 — “Git Reflog 및 기록 복구” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Git & GitHub Professional Workflow 강의 전체를 잠금 해제할 수 있습니다. Git & GitHub Professional Workflow 강의에는 총 4개의 강의가 포함되어 있습니다.
“Git Reflog 및 기록 복구”에서 뭘 배우나요?
`git reflog`를 익혀 손실된 커밋이나 브랜치를 복구하고 작업을 위한 안전망을 마련하세요. 브라우저에서 직접 실행하는 실습 코드로 Git & GitHub Professional Workflow을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Git & GitHub Professional Workflow을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Git & GitHub Professional Workflow은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“Git Reflog 및 기록 복구” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Git & GitHub Professional Workflow 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Git & GitHub Professional Workflow 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Git Reflog 및 기록 복구
- 디버깅을 위한 Git Bisect
- 저장소 유지 관리 및 정리
- git filter-repo로 기록 다시 작성하기