11

コミットの本文 (コミットのタイトル/メタデータではありません) に古いコミットがありmd5hashます。myfile.extensionSOME CHANGE

各差分を検査することなく、 fromにSOME CHANGE至るまでのコミットで変更された (存在するだけでなく) コミットのリストを生成するにはどうすればよいですか? (残念ながら、現在のケースでは多くあります。)HEADmd5hash

私は試しましたが、これはファイル内にあるgit rev-list --all | xargs git grep 'SOME CHANGE'すべてのコミットを見つけるようです。SOME CHANGE

git blameSOME CHANGE行が変更されて移動したため、役に立たないようです。

4

3 に答える 3

6

あなたが探している答えは だと思いますgit --no-pager log --pretty="%H" -G"SOME CHANGE" -- myfile.extension

最初は思いgit log -Sましたが、追加/削除のみをカバーしています。 git log -Gおそらくあなたが望むものに近いでしょう。-Sここでは、との違いを確認できます-G。完全なコミット履歴も含めて、カバーされていないものを確認できるようにします。本文で行ったことの説明については、コミット メッセージを参照してください。

# git --no-pager log --oneline -S"SOME CHANGE"
12e24ed Remove text
9427ffc Add the text
# git --no-pager log --oneline -G"SOME CHANGE"
12e24ed Remove text
6a33653 Change other text on same line
ac09bbb Append other text to same line
484b447 Move the text two lines down
9427ffc Add the text
# git --no-pager log --oneline
12e24ed Remove text
9c7f7d5 Change text on adjacent line
6a33653 Change other text on same line
ac09bbb Append other text to same line
484b447 Move the text two lines down
377936f Add other text on adjacent line
9427ffc Add the text
1929648 Initial commit

ハッシュだけで取得するには:

# git --no-pager log --pretty="%H" -G"SOME CHANGE"
12e24ed749e499bc2d8920c5d8a3ca98a6422e3f
6a336532210ca85dea86968c34cef516345b8ab4
ac09bbb5c95bbea65e7c99c730653d27f90397f4
484b4478e4cb16c839dac558f3e958683b428a64
9427ffc7dd60a3cfb1d9880083e6262faea0eefb
于 2015-11-18T21:27:26.757 に答える
1

私はあなたが探していると思います:

git log -S<string>

ファイル内で指定された文字列の出現回数 (つまり、追加/削除) を変更する違いを探します。スクリプト作成者の使用を目的としています。

コードの正確なブロック (構造体など) を探していて、そのブロックが最初に作成されてからの履歴を知りたい場合に便利です。この機能を繰り返し使用して、プリイメージ内の興味深いブロックを-S、ブロックの最初のバージョンを取得するまで続行します。

于 2015-11-18T21:27:06.933 に答える
0

これにはまだ結果を少し調べる必要がありますが、これでさらに近づくことができます。

git rev-list --all | xargs git show | egrep '(^ ?[+-].*(SOME CHANGE)|^commit)' | egrep -B1 '^ ?[+-]' | uniq

これは、各コミットのパッチを示し、それが見ているshaを示してから、一致するコード行を吐き出します. 一致に関連する社は、一致の上にあります。

これが実行可能な方法である場合は、パイプラインをさらに進めて結果をさらにクリーンアップすることができます。

于 2015-11-18T21:07:19.253 に答える