No need for a seperate directory, that's what branches are all about.
If you have a large enough harddrive, it's not a bad idea to keep separate trees, saves time when you make the inevitable mistakes that come with learning a new environment. And you can treat each as a separate repository, fetching/merging/pulling/pushing to/from each other.
Make three directories, one for each real repo you want to sync, and one for testing. In the testing one, create topic branches for the various things you want to change. Use git checkout to switch unpack the files for a particular topic branch (be sure all changes to the current branch have been committed or removed first, or you'll lose them). Then fetch/merge or pull in the changes you want to that branch.
Git makes a highly compressed snapshot of the files. When you checkout a branch, it unpacks that branch's files, replacing the current files. This allows you to switch between entire repositories by making each one a separate branch (so long as they share a common tree).
It also allows you to quickly discard large changes that did't work or you didn't like, allowing you to quickly return to a working base. For example, you can pull in changes to init to test out by making a topic branch for it, and still be able to quickly switch back to your working branch (gingerbread or ics) to pull in a change from CM or elsewhere without having to revert the changes to init. Once you are ready, you can merge the init branch into your working branch.
Once you get used to using branches and checkout, your worries become fewer, and your repairs become much easier.