Every time I run git diff, for each single changes I made, I get some sort of header with numbers, for example:
@@ -169,14 +167,12 @@ function Browser(window, document, body, XHR, $log) {.....
I wonder what does the four numbers mean? I guess -169 means that this particular line of code that follows was originally in line 169 but now is in 167? And what do 14 and 12 mean?
This header is called set of change, or hunk. Each hunk starts with a line that contains, enclosed in @@, the line or line range
from,no-of-linesin the file before (with a-) and after (with a+) the changes. After that come the lines from the file. Lines starting with a-are deleted, lines starting with a+are added. Each line modified by the patch is surrounded with 3 lines of context before and after.An addition looks like this:
That means, in the original file before line 78 (= 75 + 3 lines of context) add two lines. These will be lines 106 (= 103 + 3 lines of context) through 107 after all changes.
Note the difference in
fromnumbers (-75 vs +103), this means that there were other changes in this file before this particular hunk, that added 28 (103 – 75) lines of code.A deletion looks like this:
That means, delete line 78 (= 75 + 3 lines of context) in the original file. The unchanged context will be on lines 75 to 80 after all changes.
Note that
fromnumbers in this hunk are equal (-75 and +75), this means that either there were no changes before this hunk, or amount of added and deleted lines in previous changes are the same.Finally, a change looks like this:
That means, change line 73 (= 70 + 3 lines of context) in the file before all changes, which contains red to blue. The changed line is also line 73 (= 70 + 3 lines of context) in the file after all changes.