コード行を変更したすべての作成者を見つけたいと思います。Git-log はファイル レベルで実行できます。man ページを読んだところ、git log は行レベルでは実行できないようです。それを行うために git コマンドを使用する方法はありますか、それとも自分でスクリプトを作成する必要がありますか?
私の目的のために、これをすべてのコード行に実行したいと思います。私は自分の研究のためのオーサーシップ トレーニング データを作成するためにこれを行っています。
コード行を変更したすべての作成者を見つけたいと思います。Git-log はファイル レベルで実行できます。man ページを読んだところ、git log は行レベルでは実行できないようです。それを行うために git コマンドを使用する方法はありますか、それとも自分でスクリプトを作成する必要がありますか?
私の目的のために、これをすべてのコード行に実行したいと思います。私は自分の研究のためのオーサーシップ トレーニング データを作成するためにこれを行っています。
-S
との--pretty
フラグを組み合わせたいとしgit log
ます。
git log
man ページから、つるはし-S
検索:
-S<string>
Look for differences that introduce or remove an instance of <string>. Note that this is different than the string simply appearing in diff output;
see the pickaxe entry in gitdiffcore(7) for more details.
このフラグは、特定の文字列に対するすべての変更を検索します。別の SO 回答の例を使用する git log -g -Ssearch_for_this
と、「search_for_this」へのすべての変更の履歴が検索されます。
と組み合わせると、--pretty
より良い結果が得られます。たとえば、このコマンドは履歴を検索して 'foo' への変更を探し、短縮されたハッシュを返し、その後に作成者、2 つのダッシュ、メッセージの最初の行、2 つのダッシュ、および日付が続きます。
$ git log -Sfoo --pretty=format:'%h %an -- %s -- %ad'
bc34134 Sally Developer -- Fixed all bugs and made all clients happy forever -- Tue Jan 31 17:41:17 2025 -0500