On Mon, Oct 10, 2016 at 02:42:36PM +0100, Seaders Oloinsigh wrote: > We have a git repository that looks like > > sdk/ > android/ > ios/ > unity/ > windows/ > > Which we'd like to split into 4 repositories, 1 for each platform. To > start this process (for splitting android out), I ran, > > git filter-branch -f --prune-empty --subdirectory-filter android -- --all OK, so that should rewrite each ref to have only the contents of the "android" directory at the top-level. Note that filter-branch saves a copy of the old refs in refs/original. > Which rewrote a ton of history and commits, and looked like it worked, but > on closer inspection had left a ton of history behind. > > If I run > > git log --all -- unity/ > > It returns a list of commits that happened in the unity/ subfolder of the > original root. Here you asked for "--all", which includes refs/original. So you are seeing the original, unwritten commits (and none of your new ones, of course, because they do not have a unity/ directory!). Try: git log --all --source -- unity to see which ref each commit is coming from. Or try: git log --branches --tags -- unity to confirm that your branches and tags do not include that path. Or just: git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin to get rid of the backup refs entirely. -Peff