스택큐힙리스트

당신은 컴퓨터 전문가입니다. Git 저장소에서 삭제된 파일을 어떻게 찾고 복원할 수 있나요? 본문

카테고리 없음

당신은 컴퓨터 전문가입니다. Git 저장소에서 삭제된 파일을 어떻게 찾고 복원할 수 있나요?

스택큐힙리스트 2024. 1. 9. 18:57
반응형

Git 저장소에 있다고 가정하자. 내가 파일을 삭제하고 해당 변경 사항을 커밋했다. 나는 계속 작업을 진행하고 몇 가지 더한 커밋들을 만들었다. 그런 다음, 삭제한 파일을 복원해야 한다는 것을 알게 되었다.


git checkout <commit> -- filename.txt를 사용하여 파일을 체크아웃할 수 있다는 것을 안다. 하지만 해당 파일이 언제 삭제되었는지 모른다.



  1. 주어진 파일 이름을 삭제한 커밋을 어떻게 찾을 수 있을까?

  2. 작업 복사본으로 해당 파일을 어떻게 복원할 수 있을까?

답변 1

주어진 경로에 영향을 미친 최신 커밋을 찾으세요. 파일이 HEAD 커밋에 없으므로 이전 커밋에서 삭제한 것일 것입니다.


git rev-list -n 1 HEAD -- <file_path>

그런 다음 삭제된 커밋의 버전을 확인하려면 caret (^) 기호를 사용하세요:


git checkout <deleting_commit>^ -- <file_path>

또는 질문하는 파일이라면 1개의 명령어로 처리할 수 있습니다.


git checkout $(git rev-list -n 1 HEAD -- $file)^ -- $file

만약 zsh를 사용하고 EXTENDED_GLOB 옵션이 활성화되어 있다면 caret 기호가 작동하지 않을 수 있습니다. 그 경우에는 대신 ~1을 사용할 수 있습니다.


git checkout $(git rev-list -n 1 HEAD -- $file)~1 -- $file

답변 2

사람들이 소프트웨어 개발 프로젝트에서 Git을 주로 사용하는 이유 중 하나는 함께 작업하는 동안 파일이 삭제되더라도 회복할 수 있는 유연성 때문입니다. Git은 소스 코드 관리 도구로서, 파일의 모든 버전을 추적하고 과거로 돌아갈 수 있도록 합니다. 그러므로 Git을 사용하면 실수로 삭제한 파일을 쉽게 찾아내고 복원할 수 있습니다.
Git 저장소에서 삭제된 파일을 찾는 가장 쉬운 방법은 'git log' 명령어를 사용하는 것입니다. 'git log' 명령은 저장소의 커밋 기록을 보여주므로, 삭제된 파일이 포함되어 있는 이전 버전을 확인할 수 있습니다. 이 명령은 사용자에게 커밋의 해시값, 작성자, 날짜 등의 정보를 제공하여 파일을 찾을 수 있도록 도와줍니다.
찾은 이전 버전의 파일을 복원하려면 'git checkout' 명령어를 사용합니다. 이 명령은 특정 커밋에서 파일을 복원하는 데 사용됩니다. 'git checkout' 명령을 사용할 때는 복원하려는 파일의 경로와 함께 해당 커밋의 해시값을 지정해야 합니다. 이렇게 하면 삭제된 파일이 이전 버전에서 현재 작업 디렉토리로 돌아오게 됩니다.
또 다른 방법은 Git 저장소의 휴지통 기능을 사용하는 것입니다. 일반적으로 파일이 저장소에서 완전히 삭제되면 복원할 수 없지만, 저장소 관리자가 설정한 경우 Git은 파일을 휴지통에 임시로 보관합니다. 따라서 Git 휴지통을 확인하면 실수로 삭제한 파일을 복구할 수 있습니다. 'git reflog' 명령어를 사용하여 휴지통의 내용을 확인할 수 있습니다. 이 명령은 저장소에 대한 모든 작업 기록을 표시합니다. 휴지통에서 복구하려는 파일을 찾으면 'git checkout' 명령어를 사용하여 파일을 복원할 수 있습니다.
이러한 방법들을 통해 소프트웨어 개발 프로젝트에서 Git 저장소에서 삭제된 파일을 찾고 복원하는 방법에 대해 알 수 있습니다. Git을 사용하면 이전 파일 버전의 역사를 추적할 수 있으므로, 실수로 파일을 삭제해도 손쉽게 복구할 수 있습니다. 이러한 기능은 개발자들에게 신뢰와 안정성을 제공하며, 프로젝트에서 중요한 파일을 손실하지 않도록 도와줍니다.

반응형
Comments