-1

私は現在、コマンドラインでデータベースに保存されている遅い db クエリをフィルタリングするプログラムに取り組んでいます。

指定されたものを除くすべてのブランチのすべてのコミットを検索し、一致するすべてのコミットを返したいと思います。

フィルター条件はデータベースに保存されます (これは私に提供されます)。

例:

データベースに次のエントリがあります。

ID key       Query
1  ABCDEF    select * from example
2  0ABCDE    select * from another_example
3  1ABCDE    select * from you_get_the_picture

コードでまだ修正されていないクエリに興味があります。そのため、検索フィルターとしてキーを使用してブランチを検索する必要があります。

キーがコミットで見つかった場合は、スキップして次を調べます。一致するものが見つからない場合は、標準出力に出力します。すべてのコードは正常に動作しますが、正しい git コマンドを見つけるのに苦労しています。

私は次のものを持っています:

git grep 'ABCDEF' $(git rev-list ^origin/master) | xargs git show -s --format=%N%s

origin/master を除くすべてのブランチのコミット メッセージに「ABCDEF」を含むすべてのコミットを返す必要があります。

ただし、これらのコミットが存在することがわかっているため、git コマンドは不可能なものを返しません。

私のgitコマンドは正しくありませんか? ご指摘ありがとうございます。

4

2 に答える 2

2

これはあなたが望むものではありません:

$ git rev-list ^origin/master
$

git rev-listから到達可能なすべてのリビジョンを除外し、何も含めないように要求しorigin/masterたため、何も生成されません。

これはあなたが意味したものかもしれません:

$ git rev-list --branches ^origin/master
c2eb39026567499ba9fe0c679766c370462ae26f

または--tags、および/または--remotes同様にまたは代わりに必要になる場合があります。または--all、それには次のような参照が含まれていますがrefs/stash

もちろん、git grepコード例で示したように、それはコミット引数内に入ります。そこから動作するはずです — ただし、git grepコミット ID ではなく、一致する行が生成されます。

于 2014-07-28T08:07:14.037 に答える