but I'd rather not have to clone from the portable repo every time I want to get work done.
You won't have to, except to initialize your repo in a new location (in which case, you would clone the bare repo of your usb stick on your local environment)
Every time you want to get work done, you would:
- make sure the remote named 'origin' of your local repo points to the bare repo on the usb stick
git pull
(or git pull --rebase) in order to get potential changes from usb back to local- work
- git push (back to the usb key)
You need some kind of "centralized/portable" repo to pull from/push to.
not wanting the "centralized hub" to be a bare repo is that, let's say I go another computer without git and I want to just show someone a file
I would still recommend a bare repo on the usb stick, but I would add a post-receive hook on that bare repo, in order to update a separate working tree (still on the usb stick)
See "Want to setup a hook that copies committed files to a particular folder" as an example of such a hook.
That way, I always have, on my "centralized and portable" git repo hosting environment (ie the usb key!):
- a bare repo (I can clone/pull from/push to)
- a full working tree, up-to-date with the latest commits.