title: Difference between git subtree and git filter-banch
body: <p>Is there any difference between these two commands?</p>
  
  <pre><code>git subtree split --prefix=some_subdir -b some_branch
  </code></pre>
  
  <p>and</p>
  
  <pre><code>git filter-branch --subdirectory-filter some_subdir some_branch
  </code></pre>
  
  <p>I would like to use <code>git filter-branch</code> instead of <code>git subtree</code> because I also want to delete some files in the new branch, but I am worried that this guarantee, which is true for <code>git subtree</code>, might not be valid for <code>git filter-branch</code>:</p>
  
  <blockquote>
    <p>Repeated splits of exactly the same history are guaranteed to be
    identical (ie. to produce the same commit ids).  Because of this, if
    you add new commits and then re-split, the new commits will be
    attached as commits on top of the history you generated last time, so
    'git merge' and friends will work as expected.</p>
  </blockquote>