Chapter 7. Diffs

Before we cover the prowess of Git’s diff command, it will be beneficial to quickly cover the concept of the Unix and Linux diff utilities since the command git diff can compare files much akin to its Unix and Linux counterparts. A diff is a compact summary of the differences (hence the name “diff”) between two items. For example, given two files, the Unix and Linux diff commands compare the files line by line and summarize the deviations in a diff, as shown in the following example snippet. More specifically, the deviations list the required changes to convert one file into the other. In the example, initial is one version of some prose and rewrite is a subsequent revision. The -u option produces a unified diff, a standardized format used widely to share modifications:

   $ cat initial
   Now is the time
   For all good men
   To come to the aid
   Of their country.

   $ cat rewrite
   Today is the time
   For all good men
   And women
   To come to the aid
   Of their country.

   $ diff -u initial rewrite
   --- initial     1867-01-02 11:22:33.000000000 -0500
   +++ rewrite     2000-01-02 11:23:45.000000000 -0500
   @@ -1,4 +1,5 @@
   -Now is the time
   +Today is the time
    For all good men
   +And women
    To come to the aid
    Of their country.

Let’s look at the diff in detail. In the header, the original file is denoted by - - - and the new file by + + +. The @@ line provides line number context for both file versions. A line prefixed with a minus sign (–) must be removed from the original file to produce the ...

Get Version Control with Git, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.