210

したがって、foo.rbというファイルがあり、 barという名前のメソッドが見つからないためにエラーが発生する場合は、 foo.rbの履歴で文字列barを検索して、過去に定義されたことがあるかどうかを確認します。

私はこれを見つけましたGitのすべての履歴で文字列を検索しますか?

しかし、これはすべてのファイルを検索します。1つのファイルで検索したいだけです。

4

4 に答える 4

289

この目的のために、-Sオプションを使用してログをgitできます。

git log -S'bar' -- foo.rb
于 2012-04-18T18:55:53.163 に答える
19

または、これを試すことができます(関連する質問からすべてのgit履歴で文字列を検索してください)

git rev-list --all foo.rb | (
    while read revision; do
        git grep -F 'bar' $revision foo.rb
    done
)

実際にはファイルの内容を検索し、barが発生した場合はメッセージ/パッチをコミットしません。

于 2012-04-19T07:02:55.530 に答える
2

git logコマンドにはオーバーライドがあります(手動から):

$ git log Makefile      # commits that modify Makefile

したがって、次を使用できます。

git log foo.rb | grep "bar"
于 2012-04-18T18:16:21.457 に答える
2

git log -S "string" --follow -p "path of file"その文字列でのすべての変更の完全な履歴を表示するものを使用 しました。

于 2020-04-29T11:26:52.967 に答える