2017-03-10 11 views
0

を含まない最も早いコミットをと指定してgitでコミットを見つけることに興味があります。gitで行が含まれていない最初のコミットを取得

私はgit blame --reverseコマンドを認識していますが、の行を含む最後のコミットはで、これは同じではありません。私はそれをgit log --reverse --ancestry-path <commit shown by blame>..HEADと組み合わせて使ってみましたが、成功するために必要なコミットを見つけることができましたが、それは退屈なことがありました。

は、私はAが行が含まれていますが、Gにはないことを知って、私は次のグラフ

/----G---H---I 
/ \ \ \ 
A----B---C---D---F--G 
    \/
    X 

を持っていると言います。しかし実際に削除したコミットはXでしたが、git blame --reverse A..Gを実行すると、その行の最後のコミットはIでした。git log --reverse --ancestry-path I..Gを実行すると、Fがマージされていることがわかりますので、もっと深く掘り下げる必要がありますgit blame --reverse A..Dを実行すると、Hが返されます。次に、Gを見つけて、最後にAを見つけてXを見つけることができます。

これはまれなシナリオではありませんが、同様の時間にメインブランチにマージされ、削除されたコードを含むコミットをすべて分岐しました。

コミットXをすぐに返すコマンドがありますか?または少なくともそれを見つけるより早い方法がありますか?

+0

[削除された行をどのように「責めるのですか?」(http://stackoverflow.com/questions/4404444/how-do-i-git-blame-a-deleted-line)の可能な複製 – smarber

答えて

1

git log -S"this is part of the line that is added or removed"は、指定された文字列の出現回数(つまり、追加/削除)をファイル内で変更するすべてのコミットを提供します。

また、その文字列を--pickaxe-regexで正規表現として扱うこともできます。

関連する問題