Note: Git will say "Initialized empty Git repository in ..."
Do not worry; your new repository is not really empty.

Create your private repository by cloning your public clone on your work
machine. You may create as many private repositories in different
places as you like, but for this discussion we'll just work with one.

Add the main repository as a "remote" of your private repository so that you
can publish your work with a 'git push' command.
Commits to the main repository will flow through your private
clone to your public clone; you will not need to log into
git-public to manage your public clone.

This will cause any pushes to central to also get pushed to your private clone and
thus help keep them in sync.

Initialize a couple of git configuration directives so that git
will use your full name and email in commit messages. If you do
not do this, it is difficult for others to figure out who has
made the commits:

This will put these settings in ~/.gitconfig, and they'll apply to all
future commits from all repositories on that machine. Be sure to
do this on any machine you are committing from.

(Optional) Set up your public repository to send mail when you push to it.
... [Not changes from main version]

Normal Work

Simplified most steps

Now, lets do some development work. First, create a branch in
your private repository, and push that new branch to your public
repository. (You will not push your work to the main repository
until your branch is finished.)

git checkout -b mybranch
git push origin mybranch

As you work in the new branch, you should regularly commit your
work to the new branch in your private repository.

git commit -a -m 'Made an important change to foo'

On a regular basis you should also push your changes to your
public repository.

git push

Along the way, you may want to sync up with the main repository to pick up
(unrelated) changes by other people.

git fetch central

which will grab all changes from central. If you want to merge these changes
into your branch, so that your
branch has the latest stuff:

git merge central/master
git push

The git push will also push any unrelated changed fetched from central, thus keeping
you public clone in sync. [XXX: Make sure this is right]

If you see a warning message like this:

CONFLICT (content): Merge conflict in xxx/yyy/zzz

you will need to resolve those conflicts by hand and mark the conflicts
as resolved by re-adding the changed files.