Git 명령을 사용하여 특정 데이터 복구
Git 명령을 사용하여 데이터를 복구하는 기능은 개발자가 실수로 변경한 내용을 되돌리거나, 삭제된 파일을 복원하거나, 손실된 커밋을 복구하는 데 매우 중요합니다. 예기치 못한 가동 중지 시간을 최소화하고 프로젝트 연속성을 보장하는 데 기여합니다. 그러나 이점이 분명하지만 잠재적인 위험을 지적해야 합니다. 이 단원에 설명된 Git 명령을 적용할 때 특히 커밋 기록을 조작하거나 변경 내용을 되돌릴 때 실수로 인해 데이터가 손실될 수 있으므로 적절한 주의를 기울이는 것이 중요합니다.
Git 데이터 복구 명령
데이터 복구를 처리하는 Git 명령은 커밋, 파일, 특정 코드 줄, 삭제된 커밋 또는 분기 복구를 포함하여 여러 범주로 그룹화될 수 있습니다.
커밋 복구
- git log: 리포지토리의 커밋 기록을 나열합니다. 로그를 탐색하여 복구하려는 커밋을 찾을 수 있습니다.
- git checkout <commit>: 특정 커밋으로 전환하여 해당 커밋에서 리포지토리 상태를 효과적으로 "복구"합니다.
- git cherry-pick <commit>: 특정 커밋에 의해 도입된 변경 내용을 현재 분기에 적용합니다.
파일 복구
- git checkout <commit><file>:은 이전 커밋에서 특정 파일을 복원합니다.
- git restore <file>:은 사용자가 아직 변경 내용을 커밋하지 않았다고 가정하여 로컬 변경 내용을 취소하고 파일을 마지막 커밋된 상태로 복원합니다.
특정 코드 줄 복구
- git blame <file>:은 파일의 각 줄에 대한 수정 버전과 작성자를 표시하여 특정 변경 내용을 도입한 커밋을 식별하는 데 도움을 줍니다.
- git show <commit>:<file>:은 특정 커밋의 파일 콘텐츠를 표시합니다. 커밋과 파일 경로를 지정하면 해당 시점에 존재했던 콘텐츠를 볼 수 있습니다.
삭제된 커밋 또는 분기 복구
- git reflog: 모든 커밋 기록을 표시합니다. 이를 사용하여 이전에 삭제된 커밋 또는 분기의 SHA-1 해시를 찾은 다음 체크 아웃하거나 복원할 수 있습니다.
- git fsck --lost-found: 리포지토리의 무결성을 확인하고 어떤 분기나 태그에서도 연결할 수 없는 커밋을 나열합니다. 이를 사용하여 손실된 커밋을 복구할 수 있습니다.
특히 커밋 기록을 조작하거나 변경 내용을 되돌리는 경우 이러한 명령을 주의해서 사용해야 합니다. 복구 작업을 시도하기 전에 git stash를 시작하거나 사용하여 현재 변경 내용을 저장하기 전에 항상 리포지토리의 백업을 만들어야 합니다.
샘플 시나리오
Git 명령을 사용하여 삭제된 파일을 복구하는 프로세스를 보여 주는 샘플 시나리오를 단계별로 살펴보겠습니다. Git 리포지토리에 있는 example.txt라는 파일이 실수로 삭제되어 복구해야 한다고 가정합니다.
커밋 기록 보기:
- 커밋 기록을 표시하여 시작합니다.
git log - 커밋 기록 목록에서 example.txt 파일이 마지막으로 있었던 커밋의 SHA-1 해시를 식별합니다.
삭제된 파일 복원:
- 커밋의 SHA-1 해시를 식별한 후 git checkout을 사용하여 파일을 복원합니다.
git checkout <commit_SHA>^ -- example.txt - <commit_SHA>를 커밋의 SHA-1 해시로 바꿉니다. ^ 기호는 해당 커밋의 부모 항목을 나타내며 파일을 삭제 전 상태로 효과적으로 복원합니다.
변경 내용 확인:
- 파일을 복원한 후 리포지토리 상태를 확인하여 파일이 성공적으로 복원되었는지 확인합니다.
git status - 수정되었거나 추적되지 않은 파일로 나열된 example.txt의 유효성을 검사합니다.
변경 내용 스테이징 및 커밋
- 파일이 수정된 것으로 나열되면 커밋을 위해 준비합니다.
git add example.txt - 적절한 커밋 메시지를 사용하여 변경 내용을 커밋합니다.
git commit -m "Restored example.txt"