I had a need to maintain a public github repository for the purpose of a Jekyll site. The site will be used for an internal communications mechanism. The repository is public, but only a handful of collaborators will be allowed direct access to the repository. Everyone within the company will have the option to fork and pull-request if they desire changes to the content/structure.
Unfortunately, Jekyll does not provide a clean mechanism to prevent the early release of content. Basically, if the content is created... anyone forking the repository will be able to consume the data. Not the desired outcome.
So... I decided to keep the public repository with minimal collaborators and the ability to fork/pull-request. In order to prevent the early release of data/content... I have adopted the creation of a private repository, only accessible by the collaborators (the same few as the public repository). Work will be committed to the private repo and pull requests will be created to migrate content from private to public repo. This is not a common workflow, at least not one that I would call common.
Here is how I accomplished this...
------------------------------------------------------
before you proceed... I would highly recommend you install 'hub'... assuming you are utilizing brew... you can install via -> brew install hub. I would also recommend putting an alias within your 'profile' (alias git=hub)
git clone https://github.com/ACCOUNT_NAME/private_repo.git
cd private_repo
[make some changes]
git commit
git push origin [branch_name]