Just to play the voice of logic here, I think it would be hard to define
when a line is introduced vs. changed, as you could say that entering a new
line is the same as changing an empty line.
An algorithm for finding the difference would have to include some sort of
fuzzy consideration of the diffs, to interpret whether a changed line is
new, or an existing line moved to a new location. I imagine it would never
be an exact algorithm, very hard to implement, and also
performance-intensive. The stuff (pickaxe) you've already found is the
closest you'll get, I believe. Note that there are more options, like
searching with regexp, if you look at the docs.
You can also go manually looking for the rev like this:
1) git blame [file]
2) pick a line
3) Copy the sha of the line (last changed rev)
4) git blame [sha]^ [file]
You now will get blame on the file *before* last change on that line. Now
you decide if the line was "already there, but different", you copy the
(new) sha of the line again, and repeat the process until you find the
version of the file before the line was introduced.
The hat "^" means "parent of", so you are basically printing/blaming the
version before the one of the sha specified.
You received this message because you are subscribed to the Google Groups "Git
for human beings" group.
To post to this group, send email to git-us...@googlegroups.com.
To unsubscribe from this group, send email to
For more options, visit this group at