21363


Gitであるファイルから1行削除されていることは認識できたのですが、該当行がどのコミットで消えたのか知るコマンドはありますか？
コミットをバイナリーサーチで目Grepしていけばいづれたどりつけるのですが....


CC BY-SA 3.0
2016-01-27T01:46:40.447
21361
2016-03-17T01:37:53.597
9008
question
git
Gitで行が削除されたコミット番号を知る方法


`git log`の`-S<string>`オプションでいかがでしょうか。

> -S<string>  
>  Look for differences that change the number of occurrences of the specified
> string (i.e.  
>  addition/deletion) in a file. Intended for the scripter's use.  
>  It is useful when you're looking for an exact block of code (like a
> struct), and want to know  
>  the history of that block since it first came into being: use the feature
> iteratively to feed  
>  the interesting block in the preimage back into -S, and keep going until
> you get the very  
>  first version of the block.

`git log -p -S'削除された文字列' ファイルパス` というようなコマンドで所望の動作となるかと思います。


CC BY-SA 3.0
2016-01-27T02:52:11.317
21363
2016-01-27T02:52:11.317
2808
21361
answer


参考までに、 `git blame --reverse`
を用いると、「特定のリビジョンのファイルに対して、それぞれの行がどのリビジョンまで存在していたか」を取得できます。

[code]

    git blame --reverse START..END file-to-blame
    
[/code]

(正確には、上の例においては、START リビジョンにおける `file-to-blame`
のそれぞれの行に対して、指定されたリビジョン範囲の中で、最後にその行が存在していたリビジョンを blame で求めることができます。)


CC BY-SA 3.0
2016-03-17T01:37:53.597
23214
2016-03-17T01:37:53.597
754
21361
answer