Is there a way to clone only subset of the original branch in git?
E.g.
I have following folders structure:
A
|_ B
|_ C
|_ D
And after clone I want to have:
A
|_ C
|_ D
I want to use this flow for deploying my application:
Any advice?
As the comment suggests, you can't clone part of a path. If you are used to different source control paradigms such as the one used by subversion, this may seem unintuitive at first. The reason you can't do it is because git stores snapshots of the whole tree. So you can get a shallow clone, meaning you get only recent history up to a point. This is more like a horizontal slice or cut-off, rather than the vertical one you are after.
The best way to get what you want is to use submodules. If you already have everything in one repository, you would have to either start fresh with this paradigm or tease apart the repository into multiple repositories with filter-branch. This would also be tricky as you would end up with empty commits in all repos and if get rid of those, you would have some tricky follow up filter branching to tie the proper commits in the submodule to the parent repository.
Take a look at the chapter on submodules at http://git-scm.com/book.
What you want is possible since Git 1.7 with what is called sparse-checkout.
A good explanation is found here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With