I'm splitting out a Git repository using the --subdirectory-filter option of filter-branch which is working great except it pulls everything up to the root of the repository.
I currently have
ABC
- DEF
- GHI
- JKL
- MNO
And the result of this command:
git filter-branch -f --subdirectory-filter ABC/DEF --prune-empty -- --all
Generates this:
GHI
JKL
Where what I really want is this:
ABC
- DEF
- GHI
- JKL
I can't see anything in the Git docs that shows a filter option which preserves (or sets) the directory structure and I haven't been able to find a command I can run after the filtering to remap the structure to how I want it.
Is this possible?
I found an answer here which does the trick.
The command:
works perfectly
I've only given this cursory testing myself, but I think you can use
git filter-branch
with--tree-filter
to rewrite the branch, but removing all files apart from those in the subdirectoryABC/DEF
, with something like the following:Note that the
find
command only removes files, not directories, but since git doesn't store empty directories, this should still produce the result you want.