Rastrear a história do Git de uma linha particular

Às vezes, você gostaria de ver o histórico completo de uma linha de código, entretanto git-blame mostra apenas o último commit que tocou uma linha. Usando o repositório Rails como exemplo, digamos que você queira ver os commits (com o diff incluído) que tocam o #createmétodo definido em ActiveRecord::Persistence. Você pode usar o seguinte comando:

git log -p -G'def create' activerecord/lib/active_record/persistence.rb

A chave é a -Gbandeira que tem uma expressão regular. O -psinalizador irá gerar o patch para cada commit.