58

If I found a bug in my application, sometimes I need to know which commits have affected to the bug source code line. I'm wondering which is the best approach to do it with Git.

Ivan
  • 14,692
  • 17
  • 59
  • 96

5 Answers5

58

To see commits affecting line 40 of file foo:

git blame -L 40,+1 foo

The +1 means exactly one line. To see changes for lines 40-60, it's:

git blame -L 40,+21 foo

OR

git blame -L 40,60 foo

The second number can be an offset designated with a '+', or a line number. git blame docs

ahaurat
  • 3,947
  • 4
  • 27
  • 22
42

I'd use the git blame command. That's pretty much exactly what it is for. The documentation should get you started.

vcsjones
  • 138,677
  • 31
  • 291
  • 286
  • 1
    will this give me the entire line history or only the last one? What if the line has be modified more than once and i want to check the changes each time the line has been modified. – Yash Kalwani Sep 20 '19 at 07:17
9
git blame filename

is the best command to show you this info

Seth Robertson
  • 30,608
  • 7
  • 64
  • 57
9

If you only need the last change:

git blame

Otherwise, you could try to automatically find the offending change with

git bisect
Frank Schmitt
  • 30,195
  • 12
  • 73
  • 107
  • 1
    +1 for bisect. Good for trying to figure out which commit broke something without knowning exactly what is wrong. – vcsjones May 26 '11 at 19:24
1

You can use

git annotate filename (or)

git blame filename
Nayagam
  • 1,767
  • 18
  • 12