私のリポジトリは次のような変更を受けました。
foo
をコミットしますfoo
...foo
の内容を既存のファイルbar
とgit rm foo
の先頭に同じコミットで挿入しますここで、削除されたファイルfoo
のログを表示します。 SOを含め、私が読んだすべてのものはgit log -- foo
できるはずだと言っていますが、そのコマンドは出力を生成しません。
foo
の削除を含むコミットを見つけた場合、git log 1234abcd -- foo
とそのログを見ることができるので、foo
へのパスは問題ではないと思います。また、git merge-base HEAD 1234abcd
は1234abcd[...]
を出力することに注意してください。したがって、HEAD
からコミットに到達できることを証明する必要があると思います。作業ツリーにファイルfoo
がないことに注意してください(削除されたため、明らかです)。 OS XでGit 1.7.1.1を使用します。
なぜgit log -- foo
が機能しないのですか?どうすれば修正できますか?ありがとう!
--follow
でgit log
オプションを使用したい場合は、manページで次のように説明されています。
Continue listing the history of a file beyond renames.
事実上、これにより、名前を変更したファイルの履歴を表示できるだけでなく、作業ツリーにないファイルの履歴を表示することもできます。したがって、使用するコマンドは次のようになります。
git log --follow -- foo
更新:
Git 2.9以降では、すべてのgit diff
およびgit log
コマンドでデフォルトでこれが有効になりました。
「git diff」および「git log」ファミリの磁器レベルのコマンドにデフォルトで対応するエンドユーザーは、名前変更の検出を有効にします。 「diff.renames」構成変数を使用してこれを無効にすることができます。
X-yuriに感謝します!