The short answer is that you can't do it this way: Git is based on commits, not files, and every commit holds a full snapshot of every file. What this implies is that if you make a new commit in which some file does not exist, the difference between the old commit and the new commit is that the file is deleted. Any attempt to use a later commit from the other repository—which requires some kind of merge work, regardless of whether that's a cherry-pick from a rebase, a manual cherry-pick, or a git merge
operation: all of these perform the merge-as-a-verb action—will consider your deletion of the file as just that: deletion of the file.
That's not ultimately fatal (because you can resolve the modify/delete conflict whichever way you need to), but it's a bad plan in general.
In any case, a repository is not allowed to contain another repository, so if you have your own repository and you'd like to clone and make use of some other repository as a subset, you're either faced with:
- incorporating all of their files directly into your own repository, after which your commits and their commits are unrelated and hence Git can't help much; or
- incorporating all your files into their repository, which is likely to be "upside down" from the way you want things to be; or
- using submodules, which have their own issues.
In general, submodules—while painful (people call them sob-modules for a reason)—tend to be the favored approach here. A lot of Google software, for instance, uses submodules this way.