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出荷書類ビーチもっと学ぶ。

関連情報