回答:
git show HEAD^:path/to/file
明示的なコミット識別子を使用したりHEAD~n
、古いバージョンを表示したり、削除してから複数のコミットがあった場合に使用したりできます。
fatal: Invalid object name 'HEAD^'.
(私が言及しなければならないのは、「初期コミット」しかないことです)
これがしばらく前に削除したファイルであり、リビジョンを探したくない場合は、使用できます(foo
この例では、ファイルに名前が付けられています。フルパスを使用できます)。
git show $(git rev-list --max-count=1 --all -- foo)^:foo
rev-list
すべてのリビジョンの呼び出しルックスfoo
だけのリスト1。rev-list
リストは新しい順にリストされているので、リストされているのは変更された最後のリビジョンでfoo
、削除されたコミットになりますfoo
。(これは、gitが削除されたファイルの変更を許可せず、削除されたままであることを前提としています。)存在しないため、そのままrev-list
返されるリビジョンをそのまま使用することはできませんfoo
。ファイルの最後のリビジョンを含む直前のファイル、つまり^
in を要求する必要がありますgit show
。
**/foo
パスがわからない場合は記述できます(これはrev-listコマンドでは機能しますが、showコマンドでは機能しません。ただし、rev-listコマンドからのコミットを使用すると、パスを見つけることができます)。
正確なパスを思い出せない可能性があるため、代わりにgit logからsha1を取得して、単に発行することができます
git cat-file -p <sha1>
git whatchanged --no-abbrev
、git(またはsvn)ログに類似した出力を提供することです。
path/to/file
は、プロジェクトの最上部(リポジトリーの最上位ディレクトリー)からの絶対パスであることに注意してください。