title: How to reduce the depth of an existing git clone?
body: <p>I have a clone. I want to reduce the history on it, without cloning from scratch with a reduced depth.  Worked example:</p>
  
  <pre><code>$ git clone git@github.com:apache/spark.git
  # ...
  $ cd spark/
  $ du -hs .git
  193M    .git
  </code></pre>
  
  <p>OK, so that's not so but, but it'll serve for this discussion.  If I try <code>gc</code> it gets smaller:</p>
  
  <pre><code>$ git gc --aggressive
  Counting objects: 380616, done.
  Delta compression using up to 4 threads.
  Compressing objects: 100% (278136/278136), done.
  Writing objects: 100% (380616/380616), done.
  Total 380616 (delta 182748), reused 192702 (delta 0)
  Checking connectivity: 380616, done.
  $ du -hs .git
  108M    .git
  </code></pre>
  
  <p>Still, pretty big though (git pull suggests that it's still push/pullable to the remote). How about repack?</p>
  
  <pre><code>$ git repack -a -d --depth=5
  Counting objects: 380616, done.
  Delta compression using up to 4 threads.
  Compressing objects: 100% (95388/95388), done.
  Writing objects: 100% (380616/380616), done.
  Total 380616 (delta 182748), reused 380616 (delta 182748)
  Pauls-MBA:spark paul$ du -hs .git
  108M    .git
  </code></pre>
  
  <p>Yup, didn't get any smaller. --depth for repack isn't the same for clone:</p>
  
  <pre><code>$ git clone --depth 1 git@github.com:apache/spark.git
  Cloning into 'spark'...
  remote: Counting objects: 8520, done.
  remote: Compressing objects: 100% (6611/6611), done.
  remote: Total 8520 (delta 1448), reused 5101 (delta 710), pack-reused 0
  Receiving objects: 100% (8520/8520), 14.82 MiB | 3.63 MiB/s, done.
  Resolving deltas: 100% (1448/1448), done.
  Checking connectivity... done.
  Checking out files: 100% (13386/13386), done.
  $ cd spark
  $ du -hs .git
  17M .git
  </code></pre>
  
  <p>Git pull says it's still in step with the remote, which surprises nobody.</p>
  
  <p>OK - so how to change an existing clone to a shallow clone, without nixing it and checking it out afresh?</p>