유실된 파일 복구하기

GitBeginner
지금 연습하기

소개

개발자로 일하다 보면 중요한 파일을 실수로 삭제하고 커밋까지 해버리는 상황을 마주할 수 있습니다. 이번 챌린지는 이러한 시나리오를 바탕으로, Git 의 히스토리 조회 및 상태 복구 도구를 사용하여 유실된 파일을 찾아내고 프로젝트를 정상 상태로 복구하는 능력을 테스트합니다.

이 콘텐츠는 챌린지입니다. 가이드가 제공되는 실습 (Guided Lab) 과 달리, 정해진 단계를 따라가는 것이 아니라 스스로의 힘으로 과제를 해결해야 합니다. 챌린지는 다소 난이도가 있을 수 있습니다. 해결이 어렵다면 Labby 와 상의하거나 솔루션을 확인해 보세요. 통계에 따르면 이 챌린지는 초급 수준이며, 통과율은 96%, 학습자 만족도는 94%입니다.

유실된 파일 복구하기

챌린지를 시작하기 전, ~/project/important-project 디렉토리에 Git 저장소가 이미 초기화되어 있습니다. 이 저장소에는 두 개의 중요한 파일이 생성되었다가 실수로 삭제된 기록을 포함하여 여러 개의 커밋이 쌓여 있습니다. 상황은 다음과 같습니다.

  • 저장소는 README.md 파일을 추가하는 초기 커밋으로 시작되었습니다.
  • 이후 커밋에서 important_algorithm.pycrucial_data.txt라는 두 개의 핵심 파일이 추가되었습니다.
  • 그 뒤로 몇 차례의 변경 사항이 더 커밋되었습니다.
  • 어느 시점에 important_algorithm.pycrucial_data.txt가 실수로 삭제되었고, 이 삭제 작업이 커밋되었습니다.
  • 실수로 삭제된 커밋 이후에도 최소 하나 이상의 추가 커밋이 발생했습니다.

여러분의 과제는 저장소의 히스토리를 추적하여 삭제된 파일을 찾아 복구하고, 복구된 상태를 새롭게 커밋하는 것입니다.

과제

  1. 저장소 히스토리를 조사하여 important_algorithm.pycrucial_data.txt가 삭제된 시점을 찾으세요.
  2. 삭제되기 직전의 상태로 저장소를 복원하세요.
  3. 기존 커밋 히스토리를 유지하면서, 복구된 파일들을 "Recover deleted files"라는 메시지와 함께 새로 커밋하세요.

요구사항

  • ~/project/important-project 디렉토리에서 작업해야 합니다.
  • 복구 완료 후 important_algorithm.pycrucial_data.txt 파일이 존재해야 합니다.
  • 마지막 커밋 메시지는 반드시 "Recover deleted files"여야 하며, 이전의 커밋 히스토리가 보존되어야 합니다.

예시

챌린지를 성공적으로 마치고 프로젝트 디렉토리에서 ls를 실행하면 다음과 같이 나타나야 합니다.

$ ls ~/project/important-project
important_algorithm.py crucial_data.txt README.md

git status를 실행하면 작업 디렉토리가 깨끗한 상태여야 합니다.

$ git status
On branch master
nothing to commit, working tree clean

그리고 git log를 실행하면 최상단에 새로운 커밋이 보여야 합니다.

$ git log --oneline
8876d8b (HEAD -> master) Recover deleted files
9b3525c Update project status
5e6234c Oops, accidentally deleted important files
9de9506 Update algorithm TODO
01c36ae Add crucial data and algorithm
638a98d Initial commit
✨ 솔루션 확인 및 연습

요약

이 챌린지에서 여러분은 실수로 파일을 삭제하는 흔한 Git 시나리오를 해결해 보았습니다. 이를 통해 다음의 기술들을 익혔습니다.

  1. HEAD 의 변화를 포함하여 저장소의 전체 히스토리를 추적하는 방법.
  2. 저장소를 특정 과거 시점으로 되돌려 프로젝트의 시간을 거스르는 방법.
  3. 복구된 상태를 보존하기 위해 새로운 커밋을 생성하는 방법.

이러한 기술은 유실된 커밋을 찾거나 실수를 바로잡고, 명확한 프로젝트 히스토리를 유지하는 데 매우 유용합니다. 이러한 도구들이 재앙으로부터 여러분을 구해줄 수는 있지만, 가장 좋은 방법은 항상 신중하게 작업하고 자주 상세한 커밋을 남겨 애초에 이런 상황을 방지하는 것임을 기억하세요.

이번 챌린지를 완수함으로써 여러분은 Git 의 가장 강력한 복구 도구들을 실전에서 다루어 보았습니다. 이 경험은 앞으로의 개발 경력에 큰 자산이 될 것입니다.