Skip to content

Commit 687789b

Browse files
committed
git diff done
1 parent 8ea8f0c commit 687789b

File tree

2 files changed

+202
-13
lines changed

2 files changed

+202
-13
lines changed

basic/index.html

Lines changed: 186 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,33 +57,33 @@ <h2>
5757
</p>
5858

5959
<pre>
60-
$ git status -s
61-
?? README
62-
?? hello.rb
60+
<b>$ git status -s</b>
61+
<span class="red">??</span> README
62+
<span class="red">??</span> hello.rb
6363
</pre>
6464

6565
So right now we have two untracked files. We can now add them.
6666

6767
<pre>
68-
$ git add README hello.rb
68+
<b>$ git add README hello.rb</b>
6969
</pre>
7070

7171
Now if we run <code>git status</code> again, we'll see that they've been
7272
added.
7373

7474
<pre>
75-
$ git status -s
76-
A README
77-
A hello.rb
75+
<b>$ git status -s</b>
76+
<span class="green">A</span> README
77+
<span class="green">A</span> hello.rb
7878
</pre>
7979

8080
<p>OK, so now if we edit one of these files and run <code>git status</code>
8181
again, we will see something odd.</p>
8282
<pre>
83-
$ vim README
84-
$ git status -s
85-
AM README
86-
A hello.rb
83+
<b>$ vim README</b>
84+
<b>$ git status -s</b>
85+
<span class="green">A</span><span class="red">M</span> README
86+
<span class="green">A</span> hello.rb
8787
</pre>
8888

8989
<p>The 'AM' status means that the file has been modified on disk since we
@@ -184,16 +184,191 @@ <h2>
184184
<span class="green">M</span><span class="red">M</span> README
185185
<span class="red">D</span> hello.rb
186186
</pre>
187+
187188
<p class="nutshell">
188189
<strong>In a nutshell</strong>,
189190
you run <code>git status</code> to see if anything has been modified
190191
and/or staged since your last commit so you can decide if you want to
191192
commit a new snapshot and what will be recorded in it.
192193
</p>
193194

195+
</div>
196+
</div>
197+
198+
<div class="box">
199+
<h2>
200+
<span class="docs">
201+
<a href="#">docs</a> &nbsp;
202+
<a href="#">book</a>
203+
</span>
204+
<a name="diff">git diff</a>
205+
<span class="desc">shows diff of what is staged and what is modified but unstaged</span>
206+
</h2>
207+
208+
<div class="block">
209+
<p>There are two main uses of the <code>git diff</code> command. One use we
210+
will describe here, the other we will describe later in the
211+
<a href="/inspection">"Inspection and Comparison"</a>
212+
section. The way we're going to use it here is to describe the
213+
changes that are staged or modified on disk but unstaged.</p>
214+
215+
<h4>
216+
git diff
217+
<small>show diff of unstaged changes</small>
218+
</h4>
219+
220+
<p>Without any extra arguments, a simple <code>git diff</code> will display
221+
in unified diff format (a patch) what code or content you've changed in your
222+
project since the last commit that are not yet staged for the next commit
223+
snapshot.
224+
</p>
225+
226+
<pre>
227+
<b>$ vim hello.rb</b>
228+
<b>$ git status -s</b>
229+
<span class="red">M</span> hello.rb
230+
<b>$ git diff</b>
231+
<span class="umber">diff --git a/hello.rb b/hello.rb
232+
index d62ac43..8d15d50 100644
233+
--- a/hello.rb
234+
+++ b/hello.rb</span>
235+
<span class="lblue">@@ -1,7 +1,7 @@</span>
236+
class HelloWorld
237+
238+
def self.hello
239+
<span class="red">- puts "hello world"</span>
240+
<span class="green">+ puts "hola mundo"</span>
241+
end
242+
243+
end
244+
</pre>
245+
246+
<p>So where <code>git status</code> will show you what files have changed
247+
and/or been staged since your last commit, <code>git diff</code> will
248+
show you what those changes actually are, line by line. It's generally
249+
a good follow-up command to <code>git status</code>
250+
</p>
251+
252+
<h4>
253+
git diff --cached
254+
<small>show diff of staged changes</small>
255+
</h4>
256+
257+
<p>The <code>git diff --cached</code> command will show you what contents
258+
have been staged. That is, this will show you the changes that will
259+
currently go into the next commit snapshot. So, if you were to stage
260+
the change to <code>hello.rb</code> in the example above,
261+
<code>git diff</code> by itself won't show you any output because it will
262+
only show you what is <i>not yet</i> staged.
263+
</p>
264+
265+
<pre>
266+
<b>$ git status -s</b>
267+
<span class="red">M</span> hello.rb
268+
<b>$ git add hello.rb </b>
269+
<b>$ git status -s</b>
270+
<span class="green">M</span> hello.rb
271+
<b>$ git diff</b>
272+
<b>$ </b>
273+
</pre>
274+
275+
<p>If you want to see the staged changes, you can run
276+
<code>git diff --cached</code> instead.</p>
277+
278+
<pre>
279+
<b>$ git status -s</b>
280+
<span class="green">M</span> hello.rb
281+
<b>$ git diff</b>
282+
<b>$ </b>
283+
<b>$ git diff --cached</b>
284+
<span class="umber">diff --git a/hello.rb b/hello.rb
285+
index d62ac43..8d15d50 100644
286+
--- a/hello.rb
287+
+++ b/hello.rb</span>
288+
<span class="lblue">@@ -1,7 +1,7 @@</span>
289+
class HelloWorld
290+
291+
def self.hello
292+
<span class="red">- puts "hello world"</span>
293+
<span class="green">+ puts "hola mundo"</span>
294+
end
295+
296+
end
297+
</pre>
298+
299+
<h4>
300+
git diff HEAD
301+
<small>show diff of all staged or unstaged changes</small>
302+
</h4>
303+
304+
<p>If you want to see both staged and unstaged changes together, you
305+
can run <code>git diff HEAD</code> - this basically means you want to
306+
see the difference between your working directory and the last commit,
307+
ignoring the staging area. If we make another change to our
308+
<code>hello.rb</code> file then we'll have some changes staged and some
309+
changes unstaged. Here are what all three <code>diff</code> commands
310+
will show you:</p>
311+
<pre>
312+
<b>$ vim hello.rb </b>
313+
<b>$ git diff</b>
314+
<span class="umber">diff --git a/hello.rb b/hello.rb
315+
index 4f40006..2ae9ba4 100644
316+
--- a/hello.rb
317+
+++ b/hello.rb</span>
318+
<span class="lblue">@@ -1,7 +1,7 @@</span>
319+
class HelloWorld
320+
321+
<span class="green">+ # says hello</span>
322+
def self.hello
323+
puts "hola mundo"
324+
end
325+
326+
end
327+
<b>$ git diff --cached</b>
328+
<span class="umber">diff --git a/hello.rb b/hello.rb
329+
index 2aabb6e..4f40006 100644
330+
--- a/hello.rb
331+
+++ b/hello.rb</span>
332+
<span class="lblue">@@ -1,7 +1,7 @@</span>
333+
class HelloWorld
334+
335+
def self.hello
336+
<span class="red">- puts "hello world"</span>
337+
<span class="green">+ puts "hola mundo"</span>
338+
end
339+
340+
end
341+
<b>$ git diff HEAD</b>
342+
<span class="umber">diff --git a/hello.rb b/hello.rb
343+
index 2aabb6e..2ae9ba4 100644
344+
--- a/hello.rb
345+
+++ b/hello.rb</span>
346+
<span class="lblue">@@ -1,7 +1,8 @@</span>
347+
class HelloWorld
348+
349+
<span class="green">+ # says hello</span>
350+
def self.hello
351+
<span class="red">- puts "hello world"</span>
352+
<span class="green">+ puts "hola mundo"</span>
353+
end
354+
355+
end
356+
</pre>
357+
358+
<p>
359+
You can also provide a file path at the end of any of these options
360+
to limit the <code>diff</code> output to a specific file or subdirectory.
361+
</p>
362+
194363

364+
<p class="nutshell">
365+
<strong>In a nutshell</strong>,
366+
you run <code>git diff</code> to see details of the <code>git status</code>
367+
command - <i>how</i> files have been modified or staged on a line by line
368+
basis.
195369
</p>
196370

371+
197372
</div>
198373
</div>
199374

css/layout.css

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ p.nutshell {
4040
margin-top: 10px;
4141
padding: 8px;
4242
background: #ffe;
43+
color: #555;
4344
}
4445

4546
.box code.code {
@@ -51,9 +52,22 @@ p.nutshell {
5152
margin: 10px;
5253
color: #555;
5354
}
54-
code.code b { color: #111; }
55-
.red { color: #833; }
55+
pre b { color: #111; }
56+
.red { color: #d33; }
5657
.green { color: #383; }
58+
.umber { color: #8A3324; }
59+
.lblue { color: #55a; }
60+
61+
.box h4 {
62+
font-family:monospace;
63+
margin-top: 20px;
64+
}
65+
.box h4 small {
66+
color: #888;
67+
font-size: 0.8em;
68+
margin-left: 10px;
69+
font-weight: normal;
70+
}
5771

5872
.note {
5973
float: right;

0 commit comments

Comments
 (0)