git log -G<regex> -p
指定されたパターンに一致する変更のコードベースの履歴を取得するための素晴らしいツールです。しかし、ほとんど関係のないチャンクの海でdiff / patch出力で関連チャンクを見つけることは圧倒的かもしれません。
生の文字列/正規表現の出力を取得することは確かに可能ですgit log
が、無関係な多くの変更による視覚的なノイズと干渉を減らすのにはほとんど役立ちません。
を読んで、私が望むものと正反対の人がgit log
いることがわかりました。出力を(フルチェンジセットに)拡張しますが、私はそれを(特定のチャンクに)制限したいと思います。--pickaxe-all
本質的に、私はdiff / patchを別のチャンクに「インテリジェントに」解析し、各チャンクに対して検索を実行し(変更された行のみ)、一致しないチャンクを削除し、次のチャンクを出力する方法を探しますあります。それが。
私が説明するツールがありますか?一致または影響を受けたイケメンを得るためのより良い方法はありますか?
私がした事前調査は..
grep
出力を比較/パッチし、コンテキストオプション値を動的に作成できる場合(たとえば、行数ではなく正規表現を介して)十分です。しかし、grep
それはまさにそのように構築されたものではありません(必須ではありません)。見つけました。パッチツールKitは最初は私のニーズに合ったようです。ただし、そのページを読んだ後、
man
これらのツールは正規表現ベースの一致ブロックを処理できないようです。 (しかしハンサムな男のリストは受け入れられますが…)ついに会いました分割 patch.rb
stdin
パッチの解析をうまく処理しているようですが、パッチを読み、必要なチャンクを一致させ、チャンクを出力して解析を処理するには大幅に改善する必要があります。
ベストアンサー1
ここhttps://stackoverflow.com/a/35434714/5305907探しているタスクを実行する方法について説明します。効果的に:
git diff -U1 | grepdiff 'console' --output-matching=hunk
指定された文字列 "console"に一致する友達のみを表示します。