#Anatomy of a Git Diff
This is a hunk, not a chunk.
diff --git a/lorem b/lorem
index 5da0182..4fcdc38 100644
--- a/lorem
+++ b/lorem
@@ -16,4 +16,24 @@ Nullam congue nunc sollicitudin, fermentum urna vel, tempus lorem. Morbi molesti
The breakdown:
diff --git a/lorem b/lorem
This is a diff
output...
using the git
format (options: combined, raw, short, etc.)
between two files: a/lorem
(source) and b/lorem
(modified)
index 5da0182..4fcdc38 100644
These changes are being made to the git index
file...
The shortened before and after hashes of the file states
and the permission level of the git index
file
NOTE: This index
keeps track of the file changes betwixt the working directory, staging area, and git repository.
--- a/lorem
+++ b/lorem
The source filename (---
) and modified filename (+++
). If adding a file, the source file will be /dev/null
. If deleting a file, the modified file will be /dev/null
@@ -16,4 +16,24 @@ Nullam congue nunc sollicitudin, fermentum urna vel, tempus lorem. Morbi molesti
This is called the unified diff hunk identifier
This is a little confusing. Get ready:
@@
Info delimiters
-[source start line],[range of source lines in this hunk]
This is NOT the number of lines modified in the source file. It is the starting line and total number lines being displayed from the source file that appear in this hunk.
+[modified start line],[range of modified lines in hunk]
This is NOT the number of lines modified/added in the modified file. It is the starting line and total number lines being displayed from the modified file that appear in this hunk.
Nullam congue...
This is the header. The start line is the line after this.
Let's take a ganders at this I R L!!
git format-patch some_branch [-o directory]
git format-patch some_branch -1 [hash] -o patches
Look at the format! Whaaa?!?!
We will use git am
to apply multiple commits based on the patches. BTW: am
means apply from mailbox.
Let's end with something easy:
git apply
applies the diff
without creating commits.