Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I find out change history of a line of code

Tags:

git

git blame can be used to find out which commit modified, but I ran into a situation that it appears the whole file is copied from somewhere that I can't tell.

$ git blame a.c
c59f772b ([email protected] 2011-08-25 01:07:44 +0000   1)   #include <stdio.h>
c59f772b ([email protected] 2011-08-25 01:07:44 +0000   2)   
c59f772b ([email protected] 2011-08-25 01:07:44 +0000   3)   int main(int argc, char **argv) {
c59f772b ([email protected] 2011-08-25 01:07:44 +0000   4)       void *handle;
c59f772b ([email protected] 2011-08-25 01:07:44 +0000   5)       double (*cosine)(double);
...

$ git log c59f772b
commit c59f772bc273e65985236ba665f7a88492a33235
Author: [email protected]
Date:   Thu Aug 25 01:07:44 2011 +0000

    Cloning a bunch of stuff from the another repository
    No changes, as is.

This commit is just about copying the code. I still don't know which and who actually wrote this code.

Can I have a list for change history of code or something similar?

like image 577
Deqing Avatar asked Oct 18 '25 00:10

Deqing


1 Answers

Glance at the power that is git :)

git blame -M -C -C -C -w

from git help blame:

-C

In addition to -M, detect lines moved or copied from other files that were modified in the same commit. This is useful when you reorganize your program and move code around across files. When this option is given twice, the command additionally looks for copies from other files in the commit that creates the file. When this option is given three times, the command additionally looks for copies from other files in any commit.

like image 62
Chronial Avatar answered Oct 22 '25 00:10

Chronial



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!