존재하지 않는 파일 테스트
이전 단계에서 git ls-tree 및 git log -- <file>을 사용하여 Git 저장소에 존재하는 파일을 성공적으로 검사했습니다. 이제 저장소의 히스토리에 없는 파일에 대해 이러한 명령어를 사용하려고 할 때 어떤 일이 발생하는지 살펴보겠습니다.
프로젝트 디렉토리에 있는지 확인하십시오.
cd ~/project/my-time-machine
먼저, 존재하지 않는 파일, 예를 들어 nonexistent.txt에 대해 git ls-tree를 사용해 보겠습니다.
git ls-tree HEAD nonexistent.txt
출력이 없어야 합니다. 이는 git ls-tree가 지정된 트리 (이 경우 HEAD의 트리) 에 있는 항목만 나열하기 때문입니다. nonexistent.txt가 최신 커밋의 트리에 없으므로 아무것도 표시되지 않습니다.
이제 동일한 존재하지 않는 파일에 대해 git log를 사용해 보겠습니다.
git log -- nonexistent.txt
다음과 유사한 출력을 볼 수 있습니다.
fatal: no such path 'nonexistent.txt' in HEAD
이것은 다른 동작입니다! git log -- <file>은 히스토리 전체에서 주어진 파일 경로에 영향을 미친 커밋을 특별히 찾습니다. 파일 경로가 어떤 커밋에도 존재하지 않은 경우 Git 은 "no such path"가 있다고 알려줍니다.
이러한 동작의 차이점은 이러한 명령어가 작동하는 방식을 강조합니다.
git ls-tree는 특정 스냅샷(커밋) 을 검사하고 해당 내용을 나열합니다.
git log -- <file>은 전체 히스토리에서 특정 파일 경로와 관련된 변경 사항을 검색합니다.
이러한 차이점을 이해하면 작업에 적합한 명령어를 선택하는 데 도움이 됩니다. 커밋에 어떤 파일이 있었는지 보려면 git ls-tree를 사용하십시오. 파일의 히스토리를 보려면 git log -- <file>을 사용하십시오.