git show는 상대 파일 이름을 이해하지 못합니다

git show는 상대 파일 이름을 이해하지 못합니다

내 시스템의 구성 파일 버전을 제어하기 위해 git을 사용하고 있습니다. 내 파일 시스템의 루트에 git root가 있는데 /, 이를 제어 /etc하고 /root.

들어가서 /root실행 하면 git log .zshrc커밋 내역이 표시됩니다. .zshrc특정 커밋의 내용을 표시하고 싶습니다 .

# git show a100e3515779a900509b52230d449a6446fa110b:.zshrc     
fatal: Path 'root/.zshrc' exists, but not '.zshrc'.
Did you mean 'a100e3515779a900509b52230d449a6446fa110b:root/.zshrc' aka 
'a100e3515779a900509b52230d449a6446fa110b:./.zshrc'?

# git show a100e3515779a900509b52230d449a6446fa110b:/root/.zshrc
fatal: Path '/root/.zshrc' exists on disk, but not in 

# git show a100e3515779a900509b52230d449a6446fa110b:root/.zshrc

# git show a100e3515779a900509b52230d449a6446fa110b:./.zshrc

마지막 2개의 명령만 유효합니다. 왜 .zshrc작동하지 않습니까 /root/.zshrc? 예를 들어 가장 불편한 표기법을 사용해야 하는 이유는 무엇입니까 ./.zshrc?

Git이 이해할 수 있도록 변경할 수 있는 구성 옵션이 있습니까 .zshrc?/root/.zshrc

답변1

표기법 에서 <rev>:<path>경로는 ./또는 로 시작 하지 않는 한 현재 디렉터리가 아닌 트리 개체 자체에 상대적입니다 ../. 두 경우 모두 …:/…절대 경로( )는 지원되지 않으며 상대 경로만 지원됩니다.

git show a100e3515779a900509b52230d449a6446fa110b:.zshrc

이는 "a100e3515779a900509b52230d449a6446fa110b 개체를 찾아 해당 개체 내에서 파일 을 보여주세요 .zshrc"를 의미합니다. a100e3515779a900509b52230d449a6446fa110b를 일종의 아카이브로 생각하세요. 이는 현재 디렉터리와 독립적으로 존재하며 현재 디렉터리에 대한 개념이 없습니다.

내가 아는 한, 이 경우를 이해하기 위해 구성 옵션을 변경할 수 없습니다 git show..zshrc./.zshrc

바라보다gitrevisions선적 서류 비치더 알아보기.

관련 정보