While coding, I sometimes come across cases where I’d like to be able to work on several different branches of logic all within the same task (page 1, page 2, and shared common libraries, for example). Since these are all semi-dependent, I don’t really want to develop them on separate branches. However, for purposes of code reviews and rebasing, it would be nice if each of these components was in its own branch.
I am wondering if there is any way (either natively in git or through some wrapper tool) to create “virtual branches” for each separate line of development, where each time I commit, I have to choose which one to send the code into, if I wanted to rebase several commits on a virtual branch down into a single commit, that could be done without regard to the chronology on other virtual branches, but when I look at the file system and build, I see the source code as if all of my virtual branches had been merged together?