Git diff --stat explanation

GitDiffDiffstat

Git Problem Overview


Git's pull output has been explained here fairly well. In spite of this I'm still unsure exactly what the text graph relates to.

For example:

git diff --stat master HEAD^

Outputs (truncated):

Site/index.php | 118 ++--

While the number of lines modified is clearly displayed as 118, the text graph is a little harder to interpret.

Could this relate to the ratio of added and removed lines?

Git Solutions


Solution 1 - Git

Yes it's the ratio of added and removed lines.

See also:

man diffstat

Solution 2 - Git

git diff --numstat "@{1 day ago}"

Parameters:

  • diff = Show diff
  • --numstat = show the number of lines inserted and removed
  • @{1 day ago} = Period.

Output
0	1	WebContent/WEB-INF/tags/Grid.tag
38	30	ant/build.xml
  • Column 1 (containing 0 38) = inserted
  • Column 2 (containing 1 30) = removed

PS: Columns are separated by tab (\t).

Solution 3 - Git

As I answered here:

It supposed to reflect the amount of changes (in lines) of each file listed.
Plus signs for additions, minuses for deletions.

The 118 gives the amount of changed lines, and the - / + gives you the proportion of deletions/additions.
When the amount of changes can fit a line you'll get '+' per addition, '-' per deletion;
Otherwise, this is an approximation, e.g.

CHANGES.txt     |   47 +++++++++++++++++++++++++++++++++
make-release.py |   77 +++++++++++++++++++++++++++++++++++++++----------------
2 files changed, 102 insertions(+), 22 deletions(-)

On CHANGES.txt since you can see that there are no '-', and since 47 '+' are a lot you have a proportionate amount of them (i.e. 100%).
On make-release.py you'll see x39 '+' standing for 55 additions and x16 '-' standing for 22 deletions.
Exactly as their proportion, and just the amount to fit output screen.

The amount of signs per line the a GCD multiple that fits the line width.

Hope that helps.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLukasWildasView Question on Stackoverflow
Solution 1 - GitPatrick B.View Answer on Stackoverflow
Solution 2 - GitEdgard LealView Answer on Stackoverflow
Solution 3 - GitOfir FarchyView Answer on Stackoverflow