Git 명령을 사용하여 특정 데이터 복구

완료됨

Git 명령을 사용하여 데이터를 복구하는 기능은 개발자가 실수로 변경한 내용을 되돌리거나 삭제된 파일을 복원하거나 손실된 커밋을 복구하는 데 매우 중요합니다. 예기치 않은 가동 중지 시간을 최소화하고 프로젝트 연속성을 보장하는 데 기여합니다. 그러나 이점은 분명하지만 잠재적 위험을 지적하는 것이 중요합니다. 이 단원에 설명된 Git 명령을 적용할 때는 특히 커밋 기록을 조작하거나 변경 내용을 되돌릴 때 오류가 데이터 손실로 이어질 수 있으므로 적절한 주의를 기울여야 합니다.

Git 데이터 복구 명령

데이터 복구를 처리하는 Git 명령은 커밋 복구, 파일, 특정 코드 줄, 삭제된 커밋 또는 분기를 비롯한 여러 범주로 그룹화할 수 있습니다.

커밋 복구

  • git 로그: 리포지토리의 커밋 기록을 나열합니다. 로그를 탐색하여 복구하려는 커밋을 찾을 수 있습니다.
  • git 체크 아웃 <커밋>: 특정 커밋으로 전환하여 해당 커밋에서 리포지토리의 상태를 효과적으로 "복구"합니다.
  • git cherry-pick <커밋>: 특정 커밋에 의해 도입된 변경 내용을 현재 브랜치에 적용합니다.

파일 복구

  • git 체크 아웃 <커밋><파일>: 이전 커밋에서 특정 파일을 복원합니다.
  • git 복원 <파일>: 로컬 변경 내용을 삭제하고 파일을 마지막으로 커밋된 상태로 복원합니다. 아직 변경 내용을 커밋하지 않은 것으로 가정합니다.

특정 코드 줄 복구

  • git blame <파일>: 파일의 각 줄에 대한 커밋 및 작성자를 표시하여 특정 변경 내용을 도입한 커밋을 식별하는 데 도움이 됩니다.
  • git show <커밋>:<파일>: 특정 커밋에서 파일의 내용을 표시합니다. 커밋 및 파일 경로를 지정하여 해당 시점에 존재했던 콘텐츠를 볼 수 있습니다.

삭제된 커밋 또는 분기 복구

  • git reflog: 모든 커밋의 레코드를 표시합니다. 이를 사용하여 이전에 삭제된 커밋 또는 분기의 SHA-1 해시를 찾은 다음 체크 아웃하거나 복원할 수 있습니다.
  • git fsck --lost-found: 리포지토리의 무결성을 확인하고 분기 또는 태그에서 연결할 수 없는 커밋을 나열합니다. 이를 사용하여 손실된 커밋을 복구할 수 있습니다.

특히 커밋 기록을 조작하거나 변경 내용을 되돌릴 때는 이러한 명령을 주의해서 사용해야 합니다. 어떤 복구 작업을 시도하기 전에 항상 리포지토리를 백업하고, 또는 git stash를 사용하여 현재 변경 내용을 저장해야 합니다.

샘플 시나리오

Git 명령을 사용하여 삭제된 파일을 복구하는 프로세스를 보여 주는 샘플 시나리오를 단계별로 살펴보겠습니다. Git 리포지토리에 있는 example.txt 이름이 지정된 파일이 실수로 삭제되어 복구해야 한다고 가정합니다.

커밋 기록 보기:

  • 먼저 커밋 기록을 표시합니다.
    git 로그
  • 커밋 기록 목록에서 파일 example.txt 마지막으로 존재했던 커밋의 SHA-1 해시를 식별합니다.

삭제된 파일 복원:

  • 커밋의 SHA-1 해시를 식별한 후에는 git 체크 아웃을 사용하여 파일을 복원합니다.
    git checkout <commit_SHA>^ -- example.txt
  • <commit_SHA> 커밋의 SHA-1 해시로 바꿉다. ^ 기호는 해당 커밋의 부모를 나타내며 삭제하기 전에 파일을 해당 상태로 효과적으로 복원합니다.

변경 내용 확인:

  • 파일을 복원한 후 리포지토리 상태를 확인하여 파일이 성공적으로 복원되었는지 확인합니다.
    git 상태
  • 수정되거나 추적되지 않은 파일로 나열된 example.txt 유효성을 검사합니다.

스테이징 및 커밋 변경 내용:

  • 파일이 수정된 것으로 나열되면 커밋을 위해 준비합니다.
    git add example.txt
  • 적절한 커밋 메시지를 사용하여 변경 내용을 커밋합니다.
    git commit -m "Restored example.txt"