2016-05-17 4 views
1

今日のgitチャレンジです。私はそれに良い一時間を過ごしましたが、誰かがおそらく頭の上からそれを知っています。複数のファイルで文字列にマッチする行があります

リポジトリ内のすべての* _template.htmlファイルに対してgit blameを実行し、文字列 "foobar"を含む行だけを出力しますか?

私はその文字列の最初のオカレンスを探しています。そうすれば、それらの行に最後に変更された日付を取得する別の方法があれば、同様に動作します。

答えて

1

ここで私はあなたがgit log -p -Sfoobarを使用する必要があります

git ls-files -- '**/*_template.html' | xargs -I{} git blame {} | grep "foobar" 
+1

彼/彼女はレポにコミットする「foobarに」と呼ばれる人を持つことが起こらないレッツ希望;) –

+0

良いキャッチ@JonasBerlin – NDavis

1

...思い付いたハックです。これにより、foobarが導入されたか、リポジトリから完全に削除されたfoobarのコミット差分が出力されます。すでにfoobarのコミットは印刷されません。

これは、与えられたシンボルが追加または削除された理由を調べるのに非常に便利です。

また、いくつかのファイルやディレクトリにこれを制限することができ

git log -Sfoobar *_template.html

+0

苦労これを機能させる実際の "foobar"文字列は少し複雑です(私はエスケープする必要がある特殊文字 - !:<>など)。それについての助け? – NDavis

+0

文字列を二重引用符で囲みます: 'git log -S" string_to_escape "' - 動作します – mvp

+0

エラー "-bash:!foobar:イベントが見つかりません"(二重引用符で囲んでも) – NDavis

関連する問題