title: git log -p vs. git show vs. git diff
body: <p>How are the commands <code>git log -p</code>, <code>git show</code>, and <code>git diff</code> related and why would one be used over another? </p>
  
  <p>Given a repo with the following 4 commits:</p>
  
  <blockquote>
    <p>commitd - last commit<br>
    commitc<br>
    commitb<br>
    coomita - initial commit</p>
  </blockquote>
  
  <p>What are the differences between the following git commands?:</p>
  
  <pre><code>git log -p commitb commitd  
  git show commitb commitd  
  git diff commitb commitd  
  
  git log -p commitd commitb  
  git show commitd commitb  
  git diff commitd commitb  
  
  git log -p commitb..commitd  
  git show commitb..commitd  
  git diff commitb..commitd
  
  git log -p commitd..commitb  
  git show commitd..commitb  
  git diff commitd..commitb
  
  git log -p commitb...commitd  
  git show commitb...commitd  
  git diff commitb...commitd
  
  git log -p commitd...commitb  
  git show commitd...commitb  
  git diff commitd...commitb
  </code></pre>